websiteWebsite
codingteam CodingTeam
A free forge, lightweight and extensible.

 

Browse the code

Revision log Information on the revision
Revision: 420 (differences)
Author: xbright
Log message: * Improved projects statistics (added a global activity overview)
* Improved DrawSVGChart
Change revision:
<?php
//   This file is a part of CodingTeam. Take a look at <http://codingteam.org>.
//   Copyright © 2007-2010 Erwan Briand <erwan@codingteam.net>
//
//   This program is free software: you can redistribute it and/or modify it
//   under the terms of the GNU Affero General Public License as published by
//   the Free Software Foundation, version 3 only.
//
//   This program 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 Affero General Public
//   License for more details.
//
//   You should have received a copy of the GNU Affero General Public License
//   along with this program. If not, see <http://www.gnu.org/licenses/>.
 
class Versions {
    private $ct_db;
 
    function __construct($db)
    {
        $this->ct_db = $db;
    }
 
    function addVersion($projectid, $version, $status)
    {
        return $this->ct_db->insert('projects_versions', array('projectid' => $projectid,
                                                               'version' => $version,
                                                               'status' => $status
                                                              ));
    }
 
    function deleteVersion($projectid, $version)
    {
        return $this->ct_db->delete('projects_versions', array('projectid' => $projectid, 'version' => $version));
    }
 
    function editVersion($projectid, $version, $status, $posid=0)
    {
        return $this->ct_db->update('projects_versions', array('status' => $status, 'posid' => $posid), array('projectid' => $projectid, 'version' => $version));
    }
 
    function versionExist($projectid, $version)
    {
        $test = $this->ct_db->select('projects_versions', array('projectid' => $projectid, 'version' => $version));
 
        if (count($test) == 0)
            return FALSE;
        else
            return TRUE;
    }
 
    function getLastVersion($projectid, $status=FALSE)
    {
        if ($status)
            $array = array('projectid' => $projectid, 'status' => $status);
        else
            $array = array('projectid' => $projectid);
 
        $return = $this->ct_db->select('projects_versions', $array, '*', 'ORDER BY ABS(version) DESC, version DESC');
 
        if (count($return) == 0)
            return FALSE;
        else
        {
            if (!function_exists('versionssort'))
            {
                function versionssort($a, $b)
                {
                    if ($a['posid'] == $b['posid'])
                        return 0;
 
                    return ($a['posid'] < $b['posid']) ? -1 : 1;
                }
            }
            usort($return, 'versionssort');
 
            $id = count($return) - 1;
            return array($return[$id]);
        }
    }
 
    function getVersions($projectid)
    {
        $versions = $this->ct_db->select('projects_versions', array('projectid' => $projectid), '*', 'ORDER BY ABS(version) ASC, version ASC');
 
        if (!function_exists('versionssort'))
        {
            function versionssort($a, $b)
            {
                if ($a['posid'] == $b['posid'])
                    return 0;
 
                return ($a['posid'] < $b['posid']) ? -1 : 1;
            }
        }
        usort($versions, 'versionssort');
 
        return $versions;
    }
}
?>