/** * @see ProjectItemFactoryInterface::create() * @param integer $project_id * @param integer $item_id * @param integer $gid * @param string $keywords * @param string $description * @return bool */ public static function create($project_id, $item_id, $gid, $keywords = null, $description = null, $parent_item_id = null, $status_id = null) { global $transaction; if ($transaction->is_in_transction() == true and is_numeric($project_id) and is_numeric($item_id)) { if (self::$project_instance_array[$project_id]) { $project = self::$project_instance_array[$project_id]; } else { $project = new Project($project_id); self::$project_instance_array[$project_id] = $project; } $project_item = new ProjectItem($project_id); $project_item->set_gid($gid); if (!$status_id) { $project_item->set_status_id($project->get_current_status_id()); } else { $project_item->set_status_id($status_id); } $project_item->set_parent_item_id($parent_item_id); if ($project_item->set_item_id($item_id) == false) { return false; } if ($project_item->link_item() == false) { return false; } $project_item->set_item_status(); if (($class_name = $project_item->is_classified()) == true) { if ($project_item->set_class($class_name) == false) { return false; } } $description_required = $project_item->is_description(); $keywords_required = $project_item->is_keywords(); if ($description_required == true xor $keywords_required == true) { if ($description_required == false and $keywords_required == true) { $project_item->set_information(null, $keywords); } else { $project_item->set_information($description, null); } } else { if ($description_required == true and $keywords_required == true) { $project_item->set_information($description, $keywords); } } if ($project_item->create_log_entry() == false) { return false; } else { ProjectTask::check_over_time_tasks($project_id); return true; } } else { return false; } }