Example #1
0
 /**
  * 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);
             }
         }
     }
 }
Example #2
0
                         } 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';
             }
         }
     }
 }
Example #3
0
  ================================================== */
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;
 }
Example #5
0
        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