/** * Save the state of the toggler * * @param string $id the id of the toggler */ public static function toggle($id) { $current_user = UserManager::instance()->getCurrentUser(); if ($current_user->isLoggedIn()) { $done = false; EventManager::instance()->processEvent(Event::TOGGLE, array('id' => $id, 'user' => $current_user, 'done' => &$done)); if (!$done) { if (strpos($id, 'tracker_report_query_') === 0) { require_once 'common/tracker/ArtifactReportFactory.class.php'; $report_id = (int) substr($id, strlen('tracker_report_query_')); $report_factory = ArtifactReportFactory::instance(); if (($report = $report_factory->getReportById($report_id, $current_user->getid())) && $report->userCanUpdate($current_user)) { $report->toggleQueryDisplay(); $report_factory->save($report); } } else { self::togglePreference($current_user, $id); } } } }
} else { $new_position = '--'; //don't change anything } } $dao->updateResultRanking($id, $report_id, $new_position); } } if ($request->isAjax()) { exit; } } else { if ($resizecolumns = $request->get('resizecolumns')) { if (is_array($resizecolumns)) { $report_id = $request->getValidated('report_id', 'uint'); $arf = new ArtifactReportFactory($ath); if ($report = $arf->getArtifactReportHtml($report_id, $atid)) { //Todo: check that the user can update the report $dao = new ArtifactReportFieldDao(CodendiDataAccess::instance()); $dao->resizeColumns($report_id, $resizecolumns); } } if ($request->isAjax()) { exit; } } else { require './browse.php'; } } } }
================================================== */ if (user_isloggedin()) { if (!isset($report_id)) { $report_id = user_get_preference('artifact_browse_report' . $atid); } else { if ($report_id != user_get_preference('artifact_browse_report' . $atid)) { user_set_preference('artifact_browse_report' . $atid, $report_id); } } } // If still not defined then force it to system 'Default' report if (!isset($report_id) || !$report_id) { $report_id = 100; } // Create factories $report_fact = new ArtifactReportFactory(); // Retrieve HTTP GET variables and store them in $prefs array $prefs = $art_field_fact->extractFieldList(false); // Create the HTML report object $art_report_html = $report_fact->getArtifactReportHtml($report_id, $atid); // {{{ (SR #832) If it does not exist, use default report instead. if (!$art_report_html) { $report_id = 100; if (user_isloggedin()) { user_set_preference('artifact_browse_report' . $atid, $report_id); } $art_report_html = $report_fact->getArtifactReportHtml($report_id, $atid); } // }}} /* ================================================== Make sure all URL arguments are captured as array. For simple
/** * create - use this to create a new ArtifactType in the database. * * @param group_id: the group id of the new tracker * @param group_id_template: the template group id (used for the copy) * @param atid_template: the template artfact type id * @param name: the name of the new tracker * @param description: the description of the new tracker * @param itemname: the itemname of the new tracker * @return id on success, false on failure. */ function create($group_id, $group_id_template, $atid_template, $name, $description, $itemname, $ugroup_mapping = false, &$report_mapping = array()) { global $Language; if (!$name || !$description || !$itemname || trim($name) == "" || trim($description) == "" || trim($itemname) == "") { $this->setError('ArtifactTypeFactory: ' . $Language->getText('tracker_common_type', 'name_requ')); return false; } // Necessary test to avoid issues when exporting the tracker to a DB (e.g. '-' not supported as table name) if (!eregi("^[a-zA-Z0-9_]+\$", $itemname)) { $this->setError($Language->getText('tracker_common_type', 'invalid_shortname', $itemname)); return false; } $reference_manager = ReferenceManager::instance(); if ($reference_manager->_isKeywordExists($itemname, $group_id)) { $this->setError($Language->getText('tracker_common_type', 'shortname_already_exists', $itemname)); return false; } if ($this->isNameExists($name, $group_id)) { $this->setError($Language->getText('tracker_common_type', 'name_already_exists', $name)); return false; } // get the template Group object $pm = ProjectManager::instance(); $template_group = $pm->getProject($group_id_template); if (!$template_group || !is_object($template_group) || $template_group->isError()) { $this->setError('ArtifactTypeFactory: ' . $Language->getText('tracker_common_type', 'invalid_templ')); } // get the Group object of the new tracker $pm = ProjectManager::instance(); $group = $pm->getProject($group_id); if (!$group || !is_object($group) || $group->isError()) { $this->setError('ArtifactTypeFactory: ' . $Language->getText('tracker_common_type', 'invalid_templ')); } // We retrieve allow_copy from template $at_template = new ArtifactType($template_group, $atid_template); $id_sharing = new TrackerIdSharingDao(); if ($id = $id_sharing->generateTrackerId()) { // First, we create a new ArtifactType into artifact_group_list // By default, set 'instantiate_for_new_projects' to '1', so that a project that is not yet a // template will be able to have its trackers cloned by default when it becomes a template. $sql = "INSERT INTO \n artifact_group_list \n (group_artifact_id, group_id, name, description, item_name, allow_copy,\n submit_instructions,browse_instructions,instantiate_for_new_projects,stop_notification\n ) \n VALUES \n ({$id},\n '" . db_ei($group_id) . "',\n '" . db_es($name) . "',\n '" . db_es($description) . "',\n '" . db_es($itemname) . "',\n '" . db_ei($at_template->allowsCopy()) . "',\n '" . db_es($at_template->getSubmitInstructions()) . "',\n '" . db_es($at_template->getBrowseInstructions()) . "',1,0)"; //echo $sql; $res = db_query($sql); if (!$res || db_affected_rows($res) <= 0) { $this->setError('ArtifactTypeFactory: ' . db_error()); return false; } else { //No need to get the last insert id since we already know the id : $id //$id = db_insertid($res,'artifact_group_list','group_artifact_id'); $at_new = new ArtifactType($group, $id); if (!$at_new->fetchData($id)) { $this->setError('ArtifactTypeFactory: ' . $Language->getText('tracker_common_type', 'load_fail')); return false; } else { //create global notifications $sql = "INSERT INTO artifact_global_notification (tracker_id, addresses, all_updates, check_permissions)\n SELECT " . db_ei($id) . ", addresses, all_updates, check_permissions\n FROM artifact_global_notification\n WHERE tracker_id = " . db_ei($atid_template); $res = db_query($sql); if (!$res || db_affected_rows($res) <= 0) { $this->setError('ArtifactTypeFactory: ' . db_error()); } // Create fieldset factory $art_fieldset_fact = new ArtifactFieldSetFactory($at_template); // Then copy all the field sets. $mapping_field_set_array = $art_fieldset_fact->copyFieldSets($atid_template, $id); if (!$mapping_field_set_array) { $this->setError('ArtifactTypeFactory: ' . $art_fieldset_fact->getErrorMessage()); return false; } // Create field factory $art_field_fact = new ArtifactFieldFactory($at_template); // Then copy all the fields informations if (!$art_field_fact->copyFields($id, $mapping_field_set_array, $ugroup_mapping)) { $this->setError('ArtifactTypeFactory: ' . $art_field_fact->getErrorMessage()); return false; } // Then copy all the reports informations // Create field factory $art_report_fact = new ArtifactReportFactory(); if (!($report_mapping = $art_report_fact->copyReports($atid_template, $id))) { $this->setError('ArtifactTypeFactory: ' . $art_report_fact->getErrorMessage()); return false; } $em =& EventManager::instance(); $pref_params = array('atid_source' => $atid_template, 'atid_dest' => $id); $em->processEvent('artifactType_created', $pref_params); // Copy artifact_notification_event and artifact_notification_role if (!$at_new->copyNotificationEvent($id)) { return false; } if (!$at_new->copyNotificationRole($id)) { return false; } // Create user permissions: None for group members and Admin for group admin if (!$at_new->createUserPerms($id)) { return false; } // Create canned responses $canned_new = new ArtifactCanned($at_new); $canned_template = $at_template->getCannedResponses(); if ($canned_template && db_numrows($canned_template) > 0) { while ($row = db_fetch_array($canned_template)) { $canned_new->create($row['title'], $row['body']); } } //Copy template permission permission_copy_tracker_and_field_permissions($atid_template, $id, $group_id_template, $group_id, $ugroup_mapping); //Copy Rules require_once 'ArtifactRulesManager.class.php'; $arm = new ArtifactRulesManager(); $arm->copyRules($atid_template, $id); } } } return $id; }
break; case 'delete': // Create field factory if ($group = $pm->getProject($request->getValidated('group_id', 'GroupId'))) { $atid = $request->getValidated('atid', 'uint'); $ath = new ArtifactType($group, $atid); $atf = new ArtifactTypeFactory($group); $art_field_fact = new ArtifactFieldFactory($ath); // Then delete all the fields informations if (!$art_field_fact->deleteFields($atid)) { exit_error($Language->getText('global', 'error'), $art_field_fact->getErrorMessage()); return false; } // Then delete all the reports informations // Create field factory $art_report_fact = new ArtifactReportFactory(); if (!$art_report_fact->deleteReports($atid)) { exit_error($Language->getText('global', 'error'), $art_report_fact->getErrorMessage()); return false; } // Delete the artifact type itself if (!$atf->deleteArtifactType($atid)) { exit_error($Language->getText('global', 'error'), $atf->getErrorMessage()); } $feedback = $Language->getText('tracker_admin_restore', 'tracker_deleted'); } break; default: break; } // switch