/** * Handle on_milestone_add_links event * * @param Milestone $milestone * @param User $user * @param array $links * @return null */ function tickets_handle_on_milestone_add_links($milestone, $user, &$links) { if ($user->getProjectPermission('ticket', $milestone->getProject()) >= PROJECT_PERMISSION_CREATE) { $links[lang('Ticket')] = tickets_module_add_ticket_url($milestone->getProject(), array('milestone_id' => $milestone->getId())); } // if }
/** * Handle on_milestone_add_links event * * @param Milestone $milestone * @param User $user * @param array $links * @return null */ function discussions_handle_on_milestone_add_links($milestone, $user, &$links) { if ($user->getProjectPermission('discussion', $milestone->getProject()) >= PROJECT_PERMISSION_CREATE) { $links[lang('Discussion')] = discussions_module_add_discussion_url($milestone->getProject(), array('milestone_id' => $milestone->getId())); } // if }
/** * Handle on_milestone_add_links event * * @param Milestone $milestone * @param User $user * @param array $links * @return null */ function pages_handle_on_milestone_add_links($milestone, $user, &$links) { if ($user->getProjectPermission('page', $milestone->getProject()) >= PROJECT_PERMISSION_CREATE) { $links[lang('Page')] = pages_module_add_page_url($milestone->getProject(), array('milestone_id' => $milestone->getId())); } // if }
/** * Constructor * * @param Milestone $object */ function __construct($object) { if ($object instanceof RemediaMilestone) { $this->object = $object; } else { $this->object = new RemediaMilestone($object->getId()); } }
/** * @param Project $project * @param Milestone $milestone * @param User $user * @param NamedList $sections * @param string $interface */ function frosso_handle_on_milestone_sections(&$project, &$milestone, &$user, &$sections, $interface) { //uncomment these lines to add a new tab, instead if (Tasks::canAccess($user, $project)) { Router::assemble('milestone_tasks', array('project_slug' => $project->getSlug(), 'milestone_id' => $milestone->getId())); // $section = array( // 'text' => lang('FRed'), // 'url' => Router::assemble('tasks_frosso', array('project_slug' => $project->getSlug(), 'milestone_id' => $milestone->getId())), // 'options' => array(), // ); // $sections->add('frosso', $section); } // if }
/** * Edit specific milestone * * @param void * @return null */ function edit() { $this->wireframe->print_button = false; if ($this->active_milestone->isNew()) { $this->httpError(HTTP_ERR_NOT_FOUND); } // if if (!$this->active_milestone->canEdit($this->logged_user)) { $this->httpError(HTTP_ERR_FORBIDDEN); } // if //$this->wireframe->addPageMessage(lang('<a href=":url">Click here</a> if you wish to reschedule this milestone', array('url' => $this->active_milestone->getRescheduleUrl())), 'info'); $this->wireframe->addPageMessage(lang('<a href=":url">Click here</a> if you wish to reschedule this project', array('url' => $this->active_milestone->getRescheduleUrl())), 'info'); $milestone_data = $this->request->post('milestone'); if (!is_array($milestone_data)) { $milestone_data = array('name' => $this->active_milestone->getName(), 'body' => $this->active_milestone->getBody(), 'start_on' => $this->active_milestone->getStartOn(), 'due_on' => $this->active_milestone->getDueOn(), 'priority' => $this->active_milestone->getPriority(), 'assignees' => Assignments::findAssignmentDataByObject($this->active_milestone), 'tags' => $this->active_milestone->getTags(), 'project_id' => $this->active_milestone->getProjectId(), 'visibility' => $this->active_milestone->getVisibility()); } // if //BOF:mod 20121116 $options = array(); $options[] = array('url' => 'javascript:convert_object_to_ticket(\'' . $this->active_milestone->getProjectId() . '\', \'' . $this->active_milestone->getId() . '\', \'' . $this->active_milestone->getType() . '\');', 'text' => 'Ticket'); $options[] = array('url' => 'javascript:convert_object_to_page(\'' . $this->active_milestone->getProjectId() . '\', \'' . $this->active_milestone->getId() . '\', \'' . $this->active_milestone->getType() . '\');', 'text' => 'Page'); $this->wireframe->addPageAction(lang('Convert To'), 'javascript://', $options); //EOF:mod 20121116 $this->smarty->assign('milestone_data', $milestone_data); //BOF: task 07 | AD $this->smarty->assign('is_edit_mode', '1'); //EOF: task 07 | AD if ($this->request->isSubmitted()) { if (!isset($milestone_data['assignees'])) { $milestone_data['assignees'] = array(array(), 0); } // if db_begin_work(); $old_name = $this->active_milestone->getName(); //BOF: task 07 | AD $old_project_id = $this->active_milestone->getProjectId(); //EOF: task 07 | AD $this->active_milestone->setAttributes($milestone_data); $save = $this->active_milestone->save(); if ($save && !is_error($save)) { db_commit(); //BOF: task 07 | AD //BOF: mod $this->active_milestone->register_departments(!empty($milestone_data['departments']) ? $milestone_data['departments'] : array(), implode(',', $milestone_data['departments'])); //EOF: mod //BOF:mod 20110614 $assignees_flag_data = $this->request->post('assignee'); $this->active_milestone->register_assignees_flag($assignees_flag_data); //EOF:mod 20110614 if ($old_project_id != $this->active_milestone->getProjectId()) { $link = mysql_connect(DB_HOST, DB_USER, DB_PASS); mysql_select_db(DB_NAME, $link); $query = "select id, integer_field_1 \n\t\t\t\t\t\t\tfrom healingcrystals_project_objects where \n\t\t\t\t\t\t\tmilestone_id ='" . $this->active_milestone->getId() . "' and \n\t\t\t\t\t\t\tproject_id='" . $old_project_id . "' and type='Ticket' and integer_field_1 is not null"; $result = mysql_query($query); $next_id = Tickets::findNextTicketIdByProject($this->active_milestone->getProjectId()); while ($ticket = mysql_fetch_assoc($result)) { mysql_query("update healingcrystals_project_objects \n\t\t\t\t\t\t\t\t\tset integer_field_1='" . $next_id . "' \n\t\t\t\t\t\t\t\t\twhere id='" . $ticket['id'] . "'"); $next_id++; } $query = "select updated_on, updated_by_id, updated_by_name, integer_field_1 from healingcrystals_project_objects where id='" . $this->active_milestone->getId() . "'"; $result = mysql_query($query, $link); $info = mysql_fetch_assoc($result); $query = "update healingcrystals_project_objects set \n\t\t\t\t\t\t\tproject_id ='" . $this->active_milestone->getProjectId() . "', \n\t\t\t\t\t\t\tupdated_on =" . (empty($info['updated_on']) ? "null" : "'" . $info['updated_on'] . "'") . ", \n\t\t\t\t\t\t\tupdated_by_id =" . (empty($info['updated_by_id']) ? "null" : "'" . $info['updated_by_id'] . "'") . ", \n\t\t\t\t\t\t\tupdated_by_name =" . (empty($info['updated_by_name']) ? "null" : "'" . mysql_real_escape_string($info['updated_by_name']) . "'") . ", \n\t\t\t\t\t\t\tupdated_by_email =" . (empty($info['updated_by_email']) ? "null" : "'" . $info['updated_by_email'] . "'") . " \n\t\t\t\t\t\t\twhere milestone_id ='" . $this->active_milestone->getId() . "' and project_id='" . $old_project_id . "'"; mysql_query($query); $query = "update healingcrystals_project_objects set category_id=null where id='" . $this->active_milestone->getId() . "'"; mysql_query($query); mysql_close($link); } //EOF: task 07 | AD if ($this->request->getFormat() == FORMAT_HTML) { //flash_success('Milestone ":name" has been updated', array('name' => $old_name), false, true); flash_success('Project ":name" has been updated', array('name' => $old_name), false, true); $this->redirectToUrl($this->active_milestone->getViewUrl()); } else { $this->serveData($this->active_milestone, 'milestone'); } // if } else { db_rollback(); if ($this->request->getFormat() == FORMAT_HTML) { $this->smarty->assign('errors', $save); } else { $this->serveData($save); } // if } // if } // if }
/** * Find successive milestones by a given milestone * * @param Milestone $milestone * @param integer $min_state * @param integer $min_visibility * @return array */ function findSuccessiveByMilestone($milestone, $min_state = STATE_VISIBLE, $min_visibility = VISIBILITY_NORMAL) { return Milestones::find(array('conditions' => array('project_id = ? AND type = ? AND due_on >= ? AND state >= ? AND visibility >= ? AND id != ?', $milestone->getProjectId(), 'Milestone', $milestone->getDueOn(), $min_state, $min_visibility, $milestone->getId()), 'order' => 'name')); }
function convertToMilestone(&$logged_user, &$error) { db_begin_work(); $milestone = new Milestone(); $milestone->setProjectId($this->getProjectId()); $milestone->setName($this->getName()); $milestone->setBody($this->getBody()); $milestone->setState($this->getState()); $milestone->setVisibility($this->getVisibility()); $milestone->setPriority($this->getPriority()); $milestone->setCommentsCount($this->getCommentsCount()); $milestone->setIsLocked($this->getIsLocked()); $milestone->setCreatedById($logged_user->getId()); $milestone->setCreatedByName($logged_user->getName()); $milestone->setCreatedByEmail($logged_user->getEmail()); $save = $milestone->save(); if ($save && !is_error($save)) { db_commit(); $milestone->ready(); $link = mysql_connect(DB_HOST, DB_USER, DB_PASS); mysql_select_db(DB_NAME); $query = "update healingcrystals_project_objects set parent_id='" . $milestone->getId() . "', parent_type='Milestone' where parent_id='" . $this->getId() . "' and project_id='" . $this->getProjectId() . "' and type in ('Comment', 'Task')"; mysql_query($query); $query = "update healingcrystals_project_objects set parent_id=null, parent_type=null where parent_id='" . $this->getId() . "' and project_id='" . $this->getProjectId() . "' and type not in ('Comment', 'Task')"; mysql_query($query); $query = "select * from healingcrystals_assignments where object_id='" . $this->getId() . "'"; $result = mysql_query($query); while ($entry = mysql_fetch_assoc($result)) { $query = "insert into healingcrystals_assignments (user_id, object_id, is_owner) values ('" . $entry['user_id'] . "', '" . $milestone->getId() . "', '" . $entry['is_owner'] . "')"; mysql_query($query); } $query = "select * from healingcrystals_project_object_categories where object_id='" . $this->getId() . "'"; $result = mysql_query($query); while ($entry = mysql_fetch_assoc($result)) { $query = "insert ignore into healingcrystals_project_object_categories (object_id, category_id) values ('" . $milestone->getId() . "', '" . $entry['category_id'] . "')"; mysql_query($query); } mysql_close($link); $this->moveToTrash(); return $milestone->getId(); } else { db_rollback(); $error = $save; return ''; } }
/** * Constructor * * @param Milestone $object */ function __construct($object) { $this->route = Router::assemble("frosso_ec_set_milestone_percent", array("project_slug" => $object->getProject()->getSlug(), "milestone_id" => $object->getId())); }
/** * Return all tickets by a given milestone * * @param Milestone $milestone * @param integer $min_state * @param integer $min_visibility * @return array */ function findByMilestone($milestone, $min_state = STATE_VISIBLE, $min_visibility = VISIBILITY_NORMAL) { return ProjectObjects::find(array('conditions' => array('milestone_id = ? AND type = ? AND state >= ? AND visibility >= ?', $milestone->getId(), 'Ticket', $min_state, $min_visibility), 'order' => 'name')); }
/** * Populate $links with add ticket URL via public portal * * @param Milestone $milestone * @param array $links * @param Portal $portal * @return null */ function tickets_handle_on_portal_milestone_add_links($milestone, &$links, &$portal) { $links[lang('Ticket')] = portal_tickets_module_add_ticket_url($portal, array('milestone_id' => $milestone->getId())); }
/** * Return discussions by milestone * * @param Milestone $milestone * @param integer $min_state * @param integer $min_visibility * @return array */ function findByMilestone($milestone, $min_state = STATE_VISIBLE, $min_visibility = VISIBILITY_NORMAL) { return Discussions::find(array('conditions' => array('milestone_id = ? AND type = ? AND state >= ? AND visibility >= ?', $milestone->getId(), 'Discussion', $min_state, $min_visibility), 'order' => 'boolean_field_1 DESC, datetime_field_1 DESC')); }
/** * Find all checklists by milestone * * @param Milestone $milestone * @param integer $min_state * @param integer $min_visibility * @return array */ function findByMilestone($milestone, $min_state = STATE_VISIBLE, $min_visibility = VISIBILITY_NORMAL) { return ProjectObjects::find(array('conditions' => array('milestone_id = ? AND type = ? AND state >= ? AND visibility >= ?', $milestone->getId(), 'Checklist', $min_state, $min_visibility), 'order' => 'ISNULL(position) ASC, position, created_on')); }
/** * Populate $links with add discussion URL via portal * * @param Milestone $milestone * @param array $links * @param Portal $portal * @return null */ function discussions_handle_on_portal_milestone_add_links($milestone, &$links, &$portal) { $links[lang('Discussion')] = portal_discussions_module_add_discussion_url($portal, $milestone->getProject(), array('milestone_id' => $milestone->getId())); }