public static function createProjectTask($projectTaskData)
 {
     try {
         $projectTask = new ProjectTask();
         $projectTask->project_id = $projectTaskData['project_id'];
         $projectTask->parent_task_id = $projectTaskData['parent_task_id'];
         $projectTask->project_task_id = $projectTaskData['project_task_id'];
         $projectTask->percent_complete = $projectTaskData['percent_complete'];
         $projectTask->name = $projectTaskData['name'];
         $projectTask->save();
         self::pushObject($projectTask);
         return $projectTask;
     } catch (Exception $ex) {
         die("Not all needed params were defined for new project task");
     }
 }
 public function testsave()
 {
     $projectTask = new ProjectTask();
     $projectTask->name = 'test';
     //$projectTask->project_id = "1";
     $projectTask->assigned_user_id = '1';
     $projectTask->description = 'test description';
     $projectTask->parent_task_id = 1;
     $projectTask->save();
     //test for record ID to verify that record is saved
     $this->assertTrue(isset($projectTask->id));
     $this->assertEquals(36, strlen($projectTask->id));
     //test _get_depends_on_name method
     $this->_get_depends_on_name($projectTask->id);
     //mark the record as deleted and verify that this record cannot be retrieved anymore.
     $projectTask->mark_deleted($projectTask->id);
     $result = $projectTask->retrieve($projectTask->id);
     $this->assertEquals(null, $result);
 }
Exemple #3
0
 function action_create_project()
 {
     global $current_user, $db, $mod_strings;
     $project_name = $_POST['p_name'];
     $template_id = $_POST['template_id'];
     $project_start = $_POST['start_date'];
     $copy_all = isset($_POST['copy_all_tasks']) ? 1 : 0;
     $copy_tasks = isset($_POST['tasks']) ? $_POST['tasks'] : array();
     //Get project start date
     if ($project_start != '') {
         $dateformat = $current_user->getPreference('datef');
         $startdate = DateTime::createFromFormat($dateformat, $project_start);
         $start = $startdate->format('Y-m-d');
     }
     $duration_unit = 'Days';
     //Get the project template
     $template = new AM_ProjectTemplates();
     $template->retrieve($template_id);
     //create project from template
     $project = new Project();
     $project->name = $project_name;
     $project->estimated_start_date = $start;
     $project->status = $template->status;
     $project->priority = strtolower($template->priority);
     $project->description = $template->description;
     $project->assigned_user_id = $template->assigned_user_id;
     $project->save();
     //copy all resources from template to project
     $template->load_relationship('am_projecttemplates_users_1');
     $template_users = $template->get_linked_beans('am_projecttemplates_users_1', 'User');
     $template->load_relationship('am_projecttemplates_contacts_1');
     $template_contacts = $template->get_linked_beans('am_projecttemplates_contacts_1', 'Contact');
     $project->load_relationship('project_users_1');
     foreach ($template_users as $user) {
         $project->project_users_1->add($user->id);
     }
     $project->load_relationship('project_contacts_1');
     foreach ($template_contacts as $contact) {
         $project->project_contacts_1->add($contact->id);
     }
     $template->load_relationship('am_projecttemplates_project_1');
     $template->am_projecttemplates_project_1->add($project->id);
     //Get related project template tasks. Using sql query so that the results can be ordered.
     $get_tasks = "SELECT * FROM am_tasktemplates\n                        WHERE id\n                        IN (\n                            SELECT am_tasktemplates_am_projecttemplatesam_tasktemplates_idb\n                            FROM am_tasktemplates_am_projecttemplates_c\n                            WHERE am_tasktemplates_am_projecttemplatesam_projecttemplates_ida = '" . $template_id . "'\n                            AND deleted =0\n                        )\n                        AND deleted =0\n                        ORDER BY am_tasktemplates.order_number ASC";
     $tasks = $db->query($get_tasks);
     //Create new project tasks from the template tasks
     $count = 1;
     while ($row = $db->fetchByAssoc($tasks)) {
         $project_task = new ProjectTask();
         $project_task->name = $row['name'];
         $project_task->status = $row['status'];
         $project_task->priority = strtolower($row['priority']);
         $project_task->percent_complete = $row['percent_complete'];
         $project_task->predecessors = $row['predecessors'];
         $project_task->milestone_flag = $row['milestone_flag'];
         $project_task->relationship_type = $row['relationship_type'];
         $project_task->task_number = $row['task_number'];
         $project_task->order_number = $row['order_number'];
         $project_task->estimated_effort = $row['estimated_effort'];
         $project_task->utilization = $row['utilization'];
         if ($copy_all == 0 && !in_array($row['id'], $copy_tasks)) {
             $project_task->assigned_user_id = NULL;
         } else {
             $project_task->assigned_user_id = $row['assigned_user_id'];
         }
         $project_task->description = $row['description'];
         $project_task->duration = $row['duration'];
         $project_task->duration_unit = $duration_unit;
         $project_task->project_task_id = $count;
         //Flag to prevent after save logichook running when project_tasks are created (see custom/modules/ProjectTask/updateProject.php)
         $project_task->set_project_end_date = 0;
         if ($count == '1') {
             $project_task->date_start = $start;
             $enddate = $startdate->modify('+' . $row['duration'] . ' ' . $duration_unit);
             $end = $enddate->format('Y-m-d');
             $project_task->date_finish = $end;
             $enddate_array[$count] = $end;
             $GLOBALS['log']->fatal("DATE:" . $end);
         } else {
             $start_date = $count - 1;
             $startdate = DateTime::createFromFormat('Y-m-d', $enddate_array[$start_date]);
             $GLOBALS['log']->fatal("DATE:" . $enddate_array[$start_date]);
             $start = $startdate->format('Y-m-d');
             $project_task->date_start = $start;
             $enddate = $startdate->modify('+' . $row['duration'] . ' ' . $duration_unit);
             $end = $enddate->format('Y-m-d');
             $project_task->date_finish = $end;
             $enddate = $end;
             $enddate_array[$count] = $end;
         }
         $project_task->save();
         //link tasks to the newly created project
         $project_task->load_relationship('projects');
         $project_task->projects->add($project->id);
         //Add assinged users from each task to the project resourses subpanel
         $project->load_relationship('project_users_1');
         $project->project_users_1->add($row['assigned_user_id']);
         $count++;
     }
     //set project end date to the same as end date of the last task
     $GLOBALS['log']->fatal("project end -- DATE:" . $end);
     $project->estimated_end_date = $end;
     $project->save();
     //redirct to new project
     SugarApplication::appendErrorMessage($mod_strings["LBL_NEW_PROJECT_CREATED"]);
     $params = array('module' => 'Project', 'action' => 'DetailView', 'record' => $project->id);
     SugarApplication::redirect('index.php?' . http_build_query($params));
 }
 function quick_add_task()
 {
     if (logged_user()->isGuest()) {
         flash_error(lang('no access permissions'));
         ajx_current("empty");
         return;
     }
     $notAllowedMember = '';
     if (!ProjectTask::canAdd(logged_user(), active_context(), $notAllowedMember)) {
         if (str_starts_with($notAllowedMember, '-- req dim --')) {
             flash_error(lang('must choose at least one member of', str_replace_first('-- req dim --', '', $notAllowedMember, $in)));
         } else {
             flash_error(lang('no context permissions to add', lang("tasks"), $notAllowedMember));
         }
         ajx_current("empty");
         return;
     }
     ajx_current("empty");
     $task = new ProjectTask();
     $task_data = array_var($_POST, 'task');
     $parent_id = array_var($task_data, 'parent_id', 0);
     $parent = ProjectTasks::findById($parent_id);
     if (is_array($task_data)) {
         $task_data['due_date'] = getDateValue(array_var($task_data, 'task_due_date'));
         $task_data['start_date'] = getDateValue(array_var($task_data, 'task_start_date'));
         if ($task_data['due_date'] instanceof DateTimeValue) {
             $duetime = getTimeValue(array_var($task_data, 'task_due_time'));
             if (is_array($duetime)) {
                 $task_data['due_date']->setHour(array_var($duetime, 'hours'));
                 $task_data['due_date']->setMinute(array_var($duetime, 'mins'));
             }
             $task_data['due_date']->advance(logged_user()->getTimezone() * -3600);
             $task_data['use_due_time'] = is_array($duetime);
         }
         if ($task_data['start_date'] instanceof DateTimeValue) {
             $starttime = getTimeValue(array_var($task_data, 'task_start_time'));
             if (is_array($starttime)) {
                 $task_data['start_date']->setHour(array_var($starttime, 'hours'));
                 $task_data['start_date']->setMinute(array_var($starttime, 'mins'));
             }
             $task_data['start_date']->advance(logged_user()->getTimezone() * -3600);
             $task_data['use_start_time'] = is_array($starttime);
         }
         if (config_option("wysiwyg_tasks")) {
             $task_data['type_content'] = "html";
             $task_data['text'] = preg_replace("/[\n|\r|\n\r]/", '', array_var($task_data, 'text'));
         } else {
             $task_data['type_content'] = "text";
         }
         $task_data['object_type_id'] = $task->getObjectTypeId();
         $task->setFromAttributes($task_data);
         if (array_var($task_data, 'is_completed', false) == 'true') {
             $task->setCompletedOn(DateTimeValueLib::now());
             $task->setCompletedById(logged_user()->getId());
         }
         try {
             DB::beginWork();
             $task->save();
             $totalMinutes = array_var($task_data, 'hours') * 60 + array_var($task_data, 'minutes');
             $task->setTimeEstimate($totalMinutes);
             $task->save();
             $gb_member_id = array_var($task_data, 'member_id');
             $member_ids = array();
             $persons_dim = Dimensions::findByCode('feng_persons');
             $persons_dim_id = $persons_dim instanceof Dimension ? $persons_dim->getId() : 0;
             if ($parent) {
                 if (count($parent->getMembers()) > 0) {
                     foreach ($parent->getMembers() as $member) {
                         if ($member->getDimensionId() != $persons_dim_id) {
                             $member_ids[] = $member->getId();
                         }
                     }
                 }
                 $task->setMilestoneId($parent->getMilestoneId());
                 $task->save();
             }
             if (count($member_ids) == 0) {
                 $member_ids = active_context_members(false);
             }
             if ($gb_member_id && is_numeric($gb_member_id)) {
                 $member_ids[] = $gb_member_id;
             }
             $object_controller = new ObjectController();
             $object_controller->add_to_members($task, $member_ids);
             //Add new work timeslot for this task
             //				if (array_var($task_data,'hours') != '' && array_var($task_data,'hours') > 0){
             //					$hours = array_var($task_data, 'hours');
             //					$hours = - $hours;
             //
             //					$timeslot = new Timeslot();
             //					$dt = DateTimeValueLib::now();
             //					$dt2 = DateTimeValueLib::now();
             //					$timeslot->setEndTime($dt);
             //					$dt2 = $dt2->add('h', $hours);
             //					$timeslot->setStartTime($dt2);
             //					$timeslot->setContactId(logged_user()->getId());
             //					$timeslot->setObjectId($task->getId());
             //					$timeslot->save();
             //				}
             ApplicationLogs::createLog($task, ApplicationLogs::ACTION_ADD);
             $assignee = $task->getAssignedToContact();
             if ($assignee instanceof Contact) {
                 $task->subscribeUser($assignee);
             }
             // create default reminder
             $reminder = new ObjectReminder();
             $reminder->setMinutesBefore(1440);
             $reminder->setType("reminder_email");
             $reminder->setContext("due_date");
             $reminder->setObject($task);
             $reminder->setUserId(0);
             $date = $task->getDueDate();
             if (!isset($minutes)) {
                 $minutes = 0;
             }
             if ($date instanceof DateTimeValue) {
                 $rdate = new DateTimeValue($date->getTimestamp() - $minutes * 60);
                 $reminder->setDate($rdate);
             }
             $reminder->save();
             $subs = array();
             if (config_option('multi_assignment') && Plugins::instance()->isActivePlugin('crpm')) {
                 $json_subtasks = json_decode(array_var($_POST, 'multi_assignment'));
                 $line = 0;
                 foreach ($json_subtasks as $json_subtask) {
                     $subtasks[$line]['assigned_to_contact_id'] = $json_subtask->assigned_to_contact_id;
                     $subtasks[$line]['name'] = $json_subtask->name;
                     $subtasks[$line]['time_estimate_hours'] = $json_subtask->time_estimate_hours;
                     $subtasks[$line]['time_estimate_minutes'] = $json_subtask->time_estimate_minutes;
                     $line++;
                 }
                 Hook::fire('save_subtasks', $task, $subtasks);
                 $subtasks = ProjectTasks::findAll(array('conditions' => '`parent_id` = ' . DB::escape($task->getId())));
                 // findAll
                 foreach ($subtasks as $sub) {
                     $subs[] = $sub->getArrayInfo();
                 }
             }
             // subscribe
             $task->subscribeUser(logged_user());
             DB::commit();
             // notify asignee
             if (array_var($task_data, 'notify') == 'true') {
                 try {
                     Notifier::taskAssigned($task);
                 } catch (Exception $e) {
                 }
                 // try
             }
             ajx_extra_data(array("task" => $task->getArrayInfo(), 'subtasks' => $subs));
             flash_success(lang('success add task', $task->getObjectName()));
         } catch (Exception $e) {
             DB::rollback();
             flash_error($e->getMessage());
         }
         // try
     }
     // if
 }
$project_task = new ProjectTask();
$project_task->assigned_user_id = 1;
$project_task->name = 'Gather data from meetings';
$project_task->date_start = create_date('2007', '11', '20');
//$project_task->time_start = create_time(8,0,0);
$project_task->date_finish = create_date('2007', '11', '20');
//$project_task->time_finish = create_time(8,0,0);
$project_task->project_id = $audit_plan_id;
$project_task->project_task_id = '5';
$project_task->description = 'Need to organize the data and put it in the right spreadsheet.';
$project_task->duration = '1';
$project_task->duration_unit = 'Days';
$project_task->parent_task_id = '2';
$project_task->predecessor = '4';
$project_task->percent_complete = 0;
$project_task->save();
/*
// Project: Move Mountain

$project = new Project();
$project->name = 'IPO Launch Party';
$project->description = 'Need to organize the IPO party for the upcoming Tuesday.';
$project->assigned_user_id = 1;



$move_mountain_id = $project->save();

$project_task = new ProjectTask();
$project_task->assigned_user_id = 1;
}
if (!empty($_REQUEST['date_due']) && !empty($_REQUEST['time_due'])) {
    $time_due_meridiem = "";
    if (isset($_REQUEST['time_due_meridiem'])) {
        $time_due_meridiem = $_REQUEST['time_due_meridiem'];
    }
    $project->date_due = $_REQUEST['date_due'];
    $project->time_due = $_REQUEST['time_due'] . $time_due_meridiem;
}
// lets SugarBean handle date processing
$project->process_save_dates = true;
$GLOBALS['check_notify'] = false;
if (!empty($_POST['assigned_user_id']) && $focus->assigned_user_id != $_POST['assigned_user_id'] && $_POST['assigned_user_id'] != $current_user->id) {
    $GLOBALS['check_notify'] = true;
}
if (!$project->ACLAccess('Save')) {
    ACLController::displayNoAccess(true);
    sugar_cleanup(true);
}
$project->save($GLOBALS['check_notify']);
if (isset($_REQUEST['form'])) {
    // we are doing the save from a popup window
    echo '<script>opener.window.location.reload();self.close();</script>';
    die;
} else {
    // need to refresh the page properly
    $return_module = empty($_REQUEST['return_module']) ? 'ProjectTask' : $_REQUEST['return_module'];
    $return_action = empty($_REQUEST['return_action']) ? 'index' : $_REQUEST['return_action'];
    $return_id = empty($_REQUEST['return_id']) ? $project->id : $_REQUEST['return_id'];
    header("Location: index.php?module={$return_module}&action={$return_action}&record={$return_id}");
}
Exemple #7
0
 function update_task($id, $name, $start, $end, $project_id, $milestone_flag, $status, $predecessors, $rel_type, $duration, $duration_unit, $resource, $percent_complete, $description, $actual_duration)
 {
     $task = new ProjectTask();
     $task->retrieve($id);
     $task->name = $name;
     $task->date_start = $start;
     $task->date_finish = $end;
     $task->project_id = $project_id;
     $task->milestone_flag = $milestone_flag;
     $task->status = $status;
     // $task->parent_task_id = $parent_task_id;
     $task->predecessors = $predecessors;
     $task->relationship_type = $rel_type;
     $task->duration = $duration + 1;
     //+1 to make duration appear correct in project table
     $task->duration_unit = $duration_unit;
     $task->assigned_user_id = $resource;
     $task->percent_complete = $percent_complete;
     $task->actual_duration = $actual_duration;
     $task->description = $description;
     $task->save();
 }
<?php

require_once 'init.php';
use Agil\View\View;
use Agil\Config\Config;
use Agil\Session\Session;
$request = View::route($_POST);
if ($request['METHOD'] == 'POST' && !empty($request['title']) && !empty($request['color']) && !empty($request['pk']) && Session::exist('logado')) {
    $logado = Session::get('logado');
    $title = $request['title'];
    $color = $request['color'];
    $pk = $request['pk'];
    $fields = array('title' => $title, 'color' => $color, 'id_project' => $pk);
    $model = new ProjectTask($fields);
    $project_task = $model->save();
    if ($project_task) {
        ?>
		<script>
			window.parent.boss.popup("Cartão criado com sucesso.");
			var timePopup = setTimeout(function(){
				window.parent.boss.removeClass('modal_dialog', 'active');
				window.parent.boss.ajax.load('/app/task/view_task/?pk=<?php 
        echo $pk;
        ?>
', '#app_pane_body');
			}, 100);

		</script>
		<?php 
    }
} else {
 /**
  * Attach task to this lists
  *
  * @param ProjectTask $task
  * @return null
  */
 function attachTask(ProjectTask $task)
 {
     if ($task->getTaskListId() == $this->getId()) {
         return;
     }
     $task->setTaskListId($this->getId());
     $task->save();
     if ($this->isCompleted()) {
         $this->open();
     }
 }
/// SEED DATA FOR PROJECT AND PROJECT TASK
///
include_once 'modules/Project/Project.php';
include_once 'modules/ProjectTask/ProjectTask.php';
// Project: Audit Plan
$project = new Project();
$project->name = $sugar_demodata['project_seed_data']['audit']['name'];
$project->description = $sugar_demodata['project_seed_data']['audit']['description'];
$project->assigned_user_id = 1;
$project->estimated_start_date = $sugar_demodata['project_seed_data']['audit']['estimated_start_date'];
$project->estimated_end_date = $sugar_demodata['project_seed_data']['audit']['estimated_end_date'];
$project->status = $sugar_demodata['project_seed_data']['audit']['status'];
$project->priority = $sugar_demodata['project_seed_data']['audit']['priority'];
$audit_plan_id = $project->save();
$project_task_id_counter = 1;
// all the project task IDs cannot be 1, so using couter
foreach ($sugar_demodata['project_seed_data']['audit']['project_tasks'] as $v) {
    $project_task = new ProjectTask();
    $project_task->assigned_user_id = 1;
    $project_task->name = $v['name'];
    $project_task->date_start = $v['date_start'];
    $project_task->date_finish = $v['date_finish'];
    $project_task->project_id = $audit_plan_id;
    $project_task->project_task_id = $project_task_id_counter;
    $project_task->description = $v['description'];
    $project_task->duration = $v['duration'];
    $project_task->duration_unit = $v['duration_unit'];
    $project_task->percent_complete = $v['percent_complete'];
    $communicate_stakeholders_id = $project_task->save();
    $project_task_id_counter++;
}
 /**
  * Save subtasks added in task form, at 'subtasks' tab
  * @param $parent_task: ProjectTask - The parent task to set in the subtasks to save
  * @param $subtasks_data: array - An array with all the subtasks data
  * @param $member_ids: array with the member ids to classify the subtasks
  * @return array with the application logs to generate
  */
 private function saveSubtasks($parent_task, $subtasks_data, $member_ids)
 {
     $to_log = array('add' => array(), 'edit' => array(), 'trash' => array(), 'assigned' => array());
     $subs = $parent_task->getSubscriberIds();
     $subs_array = array();
     foreach ($subs as $sid) {
         $subs_array['user_' . $sid] = 1;
     }
     if ($parent_task instanceof ProjectTask && is_array($subtasks_data)) {
         foreach ($subtasks_data as $stdata) {
             $st = null;
             if ($stdata['id'] > 0) {
                 $st = ProjectTasks::instance()->findById($stdata['id']);
                 // subtask has been deleted, delete object and continue with next subtask
                 if ($stdata['deleted'] == 1 && $st instanceof ProjectTask) {
                     /*$st->trash(false);
                     		$st->save();*/
                     DB::execute("UPDATE " . TABLE_PREFIX . "objects SET trashed_by_id=" . logged_user()->getId() . ", trashed_on=NOW() WHERE id=" . $st->getId());
                     $to_log['trash'][] = $st;
                     continue;
                 }
             }
             $new_subtask = false;
             // new subtask
             if (!$st instanceof ProjectTask) {
                 $st = new ProjectTask();
                 $new_subtask = true;
             }
             if (trim($stdata['name'] == '')) {
                 continue;
             }
             $changed = false;
             if ($st->getObjectName() != $stdata['name'] || $st->getAssignedToContactId() != $stdata['assigned_to']) {
                 $changed = true;
             }
             if ($new_subtask || $changed) {
                 if ($stdata['assigned_to'] > 0 && $stdata['assigned_to'] != $st->getAssignedToContactId()) {
                     $to_log['assigned'][] = $st;
                 }
                 $st->setParentId($parent_task->getId());
                 $st->setObjectName($stdata['name']);
                 $st->setAssignedToContactId($stdata['assigned_to']);
                 $st->setPriority(array_var($stdata, 'priority', ProjectTasks::PRIORITY_NORMAL));
                 $st->setTypeContent(config_option("wysiwyg_tasks") ? 'html' : 'text');
                 $st->save();
                 $object_controller = new ObjectController();
                 $object_controller->add_to_members($st, $member_ids);
                 $st_subs_array = $subs_array;
                 if ($stdata['assigned_to'] > 0 && !in_array($stdata['assigned_to'], $subs)) {
                     $st_subs_array['user_' . $stdata['assigned_to']] = 1;
                 }
                 $object_controller->add_subscribers($st, $st_subs_array);
                 if ($new_subtask) {
                     $to_log['add'][] = $st;
                 } else {
                     $to_log['edit'][] = $st;
                 }
             }
         }
     }
     return $to_log;
 }
 /**
  * Copy this template task to a project task
  *
  * @access public
  * @param void
  * @return null
  */
 function copyToProjectTask($instantiation_id = 0)
 {
     //$new_st_date='',$new_due_date='',$copy_status = false,$copy_repeat_options = true,$parent_subtask=0
     //param
     $parent_subtask = 0;
     $new_st_date = '';
     $new_due_date = '';
     $copy_status = false;
     $copy_repeat_options = true;
     $new_task = new ProjectTask();
     /*if($parent_subtask != 0){
     			$new_task->setParentId($parent_subtask);
     		}else{
     			$new_task->setParentId($this->getParentId());
     		}*/
     $new_task->setObjectName($this->getObjectName());
     $new_task->setText($this->getText());
     $new_task->setAssignedToContactId($this->getAssignedToContactId());
     $new_task->setAssignedOn($this->getAssignedOn());
     $new_task->setAssignedById($this->getAssignedById());
     $new_task->setTimeEstimate($this->getTimeEstimate());
     $new_task->setStartedOn($this->getStartedOn());
     $new_task->setStartedById($this->getStartedById());
     $new_task->setPriority($this->getPriority());
     $new_task->setState($this->getState());
     $new_task->setOrder($this->getOrder());
     $new_task->setMilestoneId($this->getMilestoneId());
     $new_task->setFromTemplateId($this->getTemplateId());
     $new_task->setUseStartTime($this->getUseStartTime());
     $new_task->setUseDueTime($this->getUseDueTime());
     $new_task->setTypeContent($this->getTypeContent());
     $new_task->setFromTemplateObjectId($this->getId());
     $new_task->setParentId($this->getParentId());
     $new_task->setOriginalTaskId(0);
     $new_task->setInstantiationId($instantiation_id);
     if ($this->getDueDate() instanceof DateTimeValue) {
         $new_task->setDueDate(new DateTimeValue($this->getDueDate()->getTimestamp()));
     }
     if ($this->getStartDate() instanceof DateTimeValue) {
         $new_task->setStartDate(new DateTimeValue($this->getStartDate()->getTimestamp()));
     }
     if ($copy_status) {
         $new_task->setCompletedById($this->getCompletedById());
         $new_task->setCompletedOn($this->getCompletedOn());
     }
     if ($copy_repeat_options) {
         $new_task->setRepeatEnd($this->getRepeatEnd());
         $new_task->setRepeatForever($this->getRepeatForever());
         $new_task->setRepeatNum($this->getRepeatNum());
         $new_task->setRepeatBy($this->getRepeatBy());
         $new_task->setRepeatD($this->getRepeatD());
         $new_task->setRepeatM($this->getRepeatM());
         $new_task->setRepeatY($this->getRepeatY());
     }
     if ($new_st_date != "") {
         if ($new_task->getStartDate() instanceof DateTimeValue) {
             $new_task->setStartDate($new_st_date);
         }
     }
     if ($new_due_date != "") {
         if ($new_task->getDueDate() instanceof DateTimeValue) {
             $new_task->setDueDate($new_due_date);
         }
     }
     $new_task->setDontMakeCalculations(true);
     $new_task->save();
     // Copy members, linked_objects, custom_properties, subscribers, reminders and comments
     copy_additional_object_data($this, $new_task);
     // Ensure that assigned user is subscribed
     if ($new_task->getAssignedTo() instanceof Contact) {
         $new_task->subscribeUser($new_task->getAssignedTo());
     }
     return $new_task;
 }
Exemple #13
0
function instantiate_template_task_parameters(TemplateTask $object, ProjectTask $copy, $parameterValues = array())
{
    $objProp = TemplateObjectProperties::getPropertiesByTemplateObject($object->getTemplateId(), $object->getId());
    $manager = $copy->manager();
    foreach ($objProp as $property) {
        $propName = $property->getProperty();
        $value = $property->getValue();
        if ($manager->getColumnType($propName) == DATA_TYPE_STRING || $manager->getColumnType($propName) == DATA_TYPE_INTEGER) {
            if (is_array($parameterValues)) {
                $is_present = false;
                foreach ($parameterValues as $param => $val) {
                    if (strpos($value, '{' . $param . '}') !== FALSE) {
                        $value = str_replace('{' . $param . '}', $val, $value);
                        $is_present = true;
                    }
                }
                // if parameter not present replace the parameter code with empty string
                if (!$is_present) {
                    $value = preg_replace('/[{].*[}]/U', '', $value);
                }
            }
        } else {
            if ($manager->getColumnType($propName) == DATA_TYPE_DATE || $manager->getColumnType($propName) == DATA_TYPE_DATETIME) {
                $operator = '+';
                if (strpos($value, '+') === false) {
                    $operator = '-';
                }
                $opPos = strpos($value, $operator);
                if ($opPos !== false) {
                    // Is parametric
                    $dateParam = substr($value, 1, strpos($value, '}') - 1);
                    if ($dateParam == 'task_creation') {
                        $date = DateTimeValueLib::now();
                    } else {
                        $date = getDateValue($parameterValues[$dateParam]);
                        if (!$date instanceof DateTimeValue) {
                            $date = DateTimeValueLib::now();
                        }
                        if ($copy instanceof ProjectTask && config_option('use_time_in_task_dates') && $propName == "due_date") {
                            $copy->setUseDueTime(1);
                            $hour_min = getTimeValue(user_config_option('work_day_end_time'));
                            $hour_min['hours'];
                            $hour_min['mins'];
                            $date->setHour($hour_min['hours']);
                            $date->setMinute($hour_min['mins']);
                            $date = $date->add('s', -logged_user()->getTimezone() * 3600);
                        }
                        if ($copy instanceof ProjectTask && config_option('use_time_in_task_dates') && $propName == "start_date") {
                            $copy->setUseStartTime(1);
                            $hour_min = getTimeValue(user_config_option('work_day_start_time'));
                            $hour_min['hours'];
                            $hour_min['mins'];
                            $date->setHour($hour_min['hours']);
                            $date->setMinute($hour_min['mins']);
                            $date = $date->add('s', -logged_user()->getTimezone() * 3600);
                        }
                    }
                    $dateUnit = substr($value, strlen($value) - 1);
                    // d, w or m (for days, weeks or months)
                    if ($dateUnit == 'm') {
                        $dateUnit = 'M';
                        // make month unit uppercase to call DateTimeValue::add with correct parameter
                    }
                    $dateNum = (int) substr($value, strpos($value, $operator), strlen($value) - 2);
                    //Hook::fire('template_param_date_calculation', array('op' => $operator, 'date' => $date, 'template_id' => $object->getTemplateId(), 'original' => $object, 'copy' => $copy), $dateNum);
                    $value = $date->add($dateUnit, $dateNum);
                } else {
                    $value = DateTimeValueLib::dateFromFormatAndString(user_config_option('date_format'), $value);
                }
            }
        }
        if ($value != '') {
            if (!$copy->setColumnValue($propName, $value)) {
                $copy->object->setColumnValue($propName, $value);
            }
            if ($propName == 'text' && $copy->getTypeContent() == 'text') {
                $copy->setText(html_to_text($copy->getText()));
            }
            $copy->save();
        }
    }
    // Ensure that assigned user is subscribed
    if ($copy instanceof ProjectTask && $copy->getAssignedTo() instanceof Contact) {
        $copy->subscribeUser($copy->getAssignedTo());
    }
    $ret = null;
    Hook::fire('after_template_object_param_instantiation', array('template_id' => $object->getTemplateId(), 'original' => $object, 'copy' => $copy, 'parameter_values' => $parameterValues), $ret);
}
	/**
	 * Attach subtask to thistask
	 *
	 * @param ProjectTask $task
	 * @return null
	 */
	function attachTask(ProjectTask $task) {
		if($task->getParentId() == $this->getId()) return;

		$task->setParentId($this->getId());
		$task->save();

		if($this->isCompleted()) $this->open();
	} // attachTask
$project_task->parent_id = $tradeshow_id;
$project_task->priority = 'High';
$project_task->description = "";
$project_task->order_number = 11;
$project_task->task_number = 101;
$project_task->depends_on_id = $confirm_booth_id;
$project_task->estimated_effort = 16;
$project_task->actual_effort = 3;
$project_task->utilization = 100;
$project_task->percent_complete = 25;
$project_task_id = $project_task->save();
$project_task = new ProjectTask();
$project_task->assigned_user_id = 1;
$project_task->name = 'Arrange partner meetings';
$project_task->status = 'In Progress';
$project_task->date_due = create_date();
$project_task->time_due = '17:00:00';
$project_task->date_start = create_past_date();
$project_task->time_start = '10:00:00';
$project_task->parent_id = $tradeshow_id;
$project_task->priority = 'Medium';
$project_task->description = "Get the usual bunch.";
$project_task->order_number = 12;
$project_task->task_number = 102;
$project_task->depends_on_id = $project_task_id;
$project_task->estimated_effort = 40;
$project_task->actual_effort = 10;
$project_task->utilization = 100;
$project_task->percent_complete = 25;
$project_task_id = $project_task->save();