gforge-commits
[Top][All Lists]
Advanced

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

[Gforge-commits] gforge/common/frs FRSFile.class, 1.9, 1.10 FRSPackage.c


From: tperdue
Subject: [Gforge-commits] gforge/common/frs FRSFile.class, 1.9, 1.10 FRSPackage.class, 1.11, 1.12 FRSRelease.class, 1.10, 1.11
Date: Wed, 04 Aug 2004 11:18:37 -0500

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

Modified Files:
        FRSFile.class FRSPackage.class FRSRelease.class 
Log Message:
RBAC, DELETION, AND FORUM EMAIL GATEWAY

Index: FRSFile.class
===================================================================
RCS file: /cvsroot/gforge/gforge/common/frs/FRSFile.class,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -d -r1.9 -r1.10
--- FRSFile.class       2 Jan 2004 02:10:42 -0000       1.9
+++ FRSFile.class       4 Aug 2004 16:18:32 -0000       1.10
@@ -308,6 +308,8 @@
                                $this->setError("frsDeleteFile()::2 
".db_error());
                                return false;
                        } else {
+                               $res=db_query("DELETE FROM frs_dlstats_file 
WHERE file_id='".$this->getID()."'");
+                               $res=db_query("DELETE FROM 
frs_dlstats_filetotal_agg WHERE file_id='".$this->getID()."'");
                                return true;
                        }
                }

Index: FRSPackage.class
===================================================================
RCS file: /cvsroot/gforge/gforge/common/frs/FRSPackage.class,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -d -r1.11 -r1.12
--- FRSPackage.class    9 Feb 2004 19:02:02 -0000       1.11
+++ FRSPackage.class    4 Aug 2004 16:18:32 -0000       1.12
@@ -34,6 +34,7 @@
         * @var  array   $data_array.
         */
        var $data_array;
+       var $package_releases;
 
        /**
         * The Group object.
@@ -86,9 +87,10 @@
         *      create - create a new FRSPackage in the database.
         *
         *      @param  string  The name of this package.
+        *      @param  boolean Whether it's public or not. 1=public 0=private.
         *      @return boolean success.
         */
-       function create($name) {
+       function create($name,$is_public=1) {
                global $Language;
                if (strlen($name) < 3) {
                        
$this->setError($Language->getText('frs_package','error_min_name_length'));
@@ -104,8 +106,8 @@
                        return false;
                }
 
-               $sql="INSERT INTO frs_package(group_id,name,status_id)
-                       VALUES 
('".$this->Group->getId()."','".htmlspecialchars($name)."','1')";
+               $sql="INSERT INTO frs_package(group_id,name,status_id,is_public)
+                       VALUES 
('".$this->Group->getId()."','".htmlspecialchars($name)."','1','$is_public')";
 
                db_begin();
                $result=db_query($sql);
@@ -180,6 +182,15 @@
        }
 
        /**
+        *      isPublic - whether non-group-members can view.
+        *
+        *      @return boolean   is_public.
+        */
+       function isPublic() {
+               return $this->data_array['is_public'];
+       }
+
+       /**
         *  setMonitor - Add the current user to the list of people monitoring 
this package.
         *
         *  @return     boolean success.
@@ -322,6 +333,52 @@
 
        }
 
+       /**
+        *      getReleases - gets Release objects for all the releases in this 
package.
+        *
+        *  return  array   Array of FRSRelease Objects.
+        */
+       function &getReleases() {
+               if (!is_array($this->package_releases) || 
count($this->package_releases) < 1) {
+                       $this->package_releases=array();
+                       $res=db_query("SELECT * FROM frs_release WHERE 
package_id='".$this->getID()."'");
+                       while ($arr = db_fetch_array($res)) {
+                               $this->package_releases[]=new 
FRSRelease($this,$arr['release_id'],$arr);
+                       }
+               }
+               return $this->package_releases;
+       }
+
+       /**
+        *  delete - delete this package and all its related data.
+        *
+        *  @param  bool        I'm Sure.
+        *  @param  bool        I'm REALLY sure.
+        *  @return   bool true/false;
+        */
+       function delete($sure, $really_sure) {
+               if (!$sure || !$really_sure) {
+                       $this->setMissingParamsError();
+                       return false;
+               }
+               $perm =& $this->Group->getPermission( session_get_user() );
+
+               if (!$perm || !is_object($perm) || 
!$perm->isReleaseTechnician()) {
+                       $this->setPermissionDeniedError();
+                       return false;
+               }
+               $r =& $this->getReleases();
+               for ($i=0; $i<count($r); $i++) {
+                       if (!is_object($r[$i]) || $r[$i]->isError() || 
!$r[$i]->delete($sure, $really_sure)) {
+                               $this->setError('Release Error: 
'.$r[$i]->getName().':'.$r[$i]->getErrorMessage());
+                               return false;
+                       }
+               }
+               db_query("DELETE FROM frs_package WHERE 
package_id='".$this->getID()."'
+                       AND group_id='".$this->Group->getID()."'");
+               return true;
+       }
+
 }
 
 ?>

Index: FRSRelease.class
===================================================================
RCS file: /cvsroot/gforge/gforge/common/frs/FRSRelease.class,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -d -r1.10 -r1.11
--- FRSRelease.class    21 May 2003 15:14:06 -0000      1.10
+++ FRSRelease.class    4 Aug 2004 16:18:32 -0000       1.11
@@ -42,6 +42,7 @@
         * @var  object  FRSPacakge.
         */
        var $FRSPackage;
+       var $release_files;
 
        /**
         *  Constructor.
@@ -239,15 +240,15 @@
                $date = date('Y-m-d H:i',time());
 
                $subject = $Language->getText('frs_release','email_title',array(
-                       $this->FRSPackage->Group->getUnixName(),
-                       $this->FRSPackage->getName()));
+               $this->FRSPackage->Group->getUnixName(),
+               $this->FRSPackage->getName()));
                $text = 
stripcslashes($Language->getText('frs_release','email_text',array(
-                       $this->FRSPackage->Group->getPublicName(),
-                       $this->FRSPackage->Group->getUnixName(),
-                       $this->FRSPackage->getName(),
-                       
"<http://".$GLOBALS['HTTP_HOST']."/project/showfiles.php?group_id=". 
$this->FRSPackage->Group->getID() ."&release_id=". $this->getID(),
-                       $GLOBALS['sys_name'],
-                       
"<http://$GLOBALS[HTTP_HOST]/project/filemodule_monitor.php?filemodule_id=".$this->FRSPackage->getID()."&group_id=".$this->FRSPackage->Group->getID()."&stop=1>")));
+               $this->FRSPackage->Group->getPublicName(),
+               $this->FRSPackage->Group->getUnixName(),
+               $this->FRSPackage->getName(),
+               
"<http://".$GLOBALS['HTTP_HOST']."/project/showfiles.php?group_id=". 
$this->FRSPackage->Group->getID() ."&release_id=". $this->getID(),
+               $GLOBALS['sys_name'],
+               
"<http://$GLOBALS[HTTP_HOST]/project/filemodule_monitor.php?filemodule_id=".$this->FRSPackage->getID()."&group_id=".$this->FRSPackage->Group->getID()."&stop=1>")));
                        
 
                $text = util_line_wrap($text);
@@ -258,6 +259,52 @@
        }
 
        /**
+        *      getFiles - gets all the file objects for files in this release.
+        *
+        *      return  array   Array of FRSFile Objects.
+        */
+       function &getFiles() {
+               if (!is_array($this->release_files) || 
count($this->release_files) < 1) {
+                       $this->release_files=array();
+                       $res=db_query("SELECT * FROM frs_file_vw WHERE 
release_id='".$this->getID()."'");
+                       while ($arr = db_fetch_array($res)) {
+                               $this->release_files[]=new 
FRSFile($this,$arr['release_id'],$arr);
+                       }
+               }
+               return $this->release_files;
+       }
+
+    /**
+     *  delete - delete this release and all its related data.
+     *
+     *  @param  bool    I'm Sure.
+     *  @param  bool    I'm REALLY sure.
+     *  @return   bool true/false;
+     */
+    function delete($sure, $really_sure) {
+        if (!$sure || !$really_sure) {
+            $this->setMissingParamsError();
+            return false;
+        }
+               $perm =& $this->FRSPackage->Group->getPermission( 
session_get_user() );
+
+               if (!$perm || !is_object($perm) || 
!$perm->isReleaseTechnician()) {
+                       $this->setPermissionDeniedError();
+                       return false;
+               }
+               $f =& $this->getFiles();
+               for ($i=0; $i<count($f); $i++) {
+                       if (!is_object($f[$i]) || $f[$i]->isError() || 
!$f[$i]->delete()) {
+                               $this->setError('File Error: 
'.$f[$i]->getName().':'.$f[$i]->getErrorMessage());
+                               return false;
+                       }
+               }
+               db_query("DELETE FROM frs_release WHERE 
release_id='".$this->getID()."'
+                       AND package_id='".$this->FRSPackage->getID()."'");
+               return true;
+       }
+
+       /**
         *      create - create a new release in the database.
         *
         *      @param  int     The status of this release from the frs_status 
table.





reply via email to

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