gforge-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Gforge-commits] gforge/common/tracker ArtifactExtraFieldElement.class,


From: tperdue
Subject: [Gforge-commits] gforge/common/tracker ArtifactExtraFieldElement.class, NONE, 1.1
Date: Thu, 07 Oct 2004 20:42:44 -0500

Update of /cvsroot/gforge/gforge/common/tracker
In directory db.perdue.net:/home/tperdue/share/dev.gforge.org/common/tracker

Added Files:
        ArtifactExtraFieldElement.class 
Log Message:


--- NEW FILE: ArtifactExtraFieldElement.class ---
<?php
/**
 * ArtifactExtraField.class - Class to handle user defined artifacts
 *
 * Copyright 2004 (c) Anthony J. Pugliese
 *
 * @version   $Id: ArtifactExtraFieldElement.class,v 1.1 2004/10/08 01:42:41 
tperdue Exp $
 *
 * This file is part of GForge.
 *
 * GForge is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 * GForge is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with GForge; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  US
 */
require_once('common/include/Error.class');

class ArtifactExtraFieldElement extends Error {

        /** 
         * The artifact type object.
         *
         * @var         object  $ArtifactType.
         */
        var $ArtifactType; //object

        /**
         * Array of artifact data.
         *
         * @var         array   $data_array.
         */
        var $data_array;
        /**
         *      ArtifactExtraField - Constructer
         *
         *      @param  object  ArtifactType object.
         *  @param      array   (all fields from artifact_file_user_vw) OR id 
from database.
         *  @return     boolean success.
         */
        function ArtifactExtraFieldElement(&$ArtifactType,$data=false) {
//TODO remove $id from here - the constructor for this object should require 
ExtraField as only argument
                $this->Error(); 
                
                //was ArtifactType legit?
                if (!$ArtifactType || !is_object($ArtifactType)) {
                        $this->setError('ArtifactExtraField: No Valid 
ArtifactType');
                        return false;
                }
                //did ArtifactType have an error?
                if ($ArtifactType->isError()) {
                        $this->setError('ArtifactExtraField: 
'.$Artifact->getErrorMessage());
                        return false;
                }
                $this->ArtifactType =& $ArtifactType;
                if ($data) {
                        if (is_array($data)) {
                                $this->data_array =& $data;
                                return true;
                        } else {
                                if (!$this->fetchData($data)) {
                                        return false;
                                } else {
                                        return true;
                                }
                        }
                }
        }

        /**
         *      create - create a new row in the table used to store the 
         *      choices for selection boxes.  This function is only used for 
         *      extra fields and boxes configured by the admin
         *
         *      @param  string          Name of the choice
         *      @param  int             Id the box that contains the choice.
         *  @return     true on success / false on failure.
         */
        
        function create($name,$id) {
                global $Language;
//settype($id,"integer");       
//TODO remove $id from here - the constructor for this object should require 
ExtraField as only argument
//TODO AT MINIMUM $id should be validated to == field_id that belongs to this 
tracker!
                //
                //      data validation
                //
                if (!$name) {
                        
$this->setError($Language->getText('tracker_admin_build_boxes','required_choice_name'));
                        return false;
                }
                if (!$this->ArtifactType->userIsAdmin()) {
                        $this->setPermissionDeniedError();
                        return false;
                }
                $sql="INSERT INTO artifact_extra_field_elements 
(extra_field_id,element_name) 
                        VALUES ('$id','".htmlspecialchars($name)."')";

                $result=db_query($sql);
                if ($result && db_affected_rows($result) > 0) {
                        $this->clearError();
                        return true;
                } else {
                        $this->setError(db_error());
                        return false;
                }


                //
                //      Now set up our internal data structures
                //
                if (!$this->fetchData($id)) {
                        return false;
                }

        }


        /**
         *      fetchData - re-fetch the data for this 
ArtifactExtraFieldElement from the database.
         *
         *      @param  int             ID of the Box.
         *      @return boolean success.
         */
        function fetchData($id) {
                $res=db_query("SELECT * FROM artifact_extra_field_elements 
WHERE element_id='$id'");
                if (!$res || db_numrows($res) < 1) {
                        $this->setError('ArtifactExtraField: Invalid 
ArtifactExtraFieldElement ID');
                        return false;
                }
                $this->data_array =& db_fetch_array($res);
                db_free_result($res);
                return true;
        }

        /**
         *      getArtifactType - get the ArtifactType Object this 
ArtifactExtraField is associated with.
         *
         *      @return object  ArtifactType.
         */
        function &getArtifactType() {
                return $this->ArtifactType;
        }
        
        /**
         *      getID - get this ArtifactExtraField ID.
         *
         *      @return int     The id #.
         */
        function getID() {
                return $this->data_array['element_id'];
        }
        
        /**
         *      getBoxID - get this  artifact box id.
         *
         *      @return int     The id #.
         */
        function getBoxID() {
                return $this->data_array['extra_field_id'];
        }

        /**
         *      getName - get the name.
         *
         *      @return string  The name.
         */
        function getName() {
                return $this->data_array['element_name'];
        }


        /**
         *  update - update rows in the table used to store the choices 
         *  for a selection box. This function is used only for extra  
         *  boxes and fields configured by the admin
         *
         *  @param      string  Name of the choice in a box.
         *  @param      int     Id of the box 
         *  @param      int     id of the row
         *  @return     boolean success.
         */
        function update($name,$boxid,$id) {
                if (!$this->ArtifactType->userIsAdmin()) {
                        $this->setPermissionDeniedError();
                        return false;
                }
                if (!$name) {
                        $this->setMissingParamsError();
                        return false;
                }   
                $sql="UPDATE artifact_extra_field_elements 
                        SET element_name='".htmlspecialchars($name)."' 
                        WHERE element_id='$id'"; 
//                      AND extra_field_id='$boxid'";
                $result=db_query($sql);
                if ($result && db_affected_rows($result) > 0) {
                        return true;
                } else {
                        $this->setError(db_error());
                        return false;
                }
        }
}

?>





reply via email to

[Prev in Thread] Current Thread [Next in Thread]