Platon Technologies
neprihlásený Prihlásiť Registrácia
SlovakEnglish
open source software development oslavujeme 10 rokov vývoja otvoreného softvéru! Štvrtok, 28. marec 2024

Súbor: [Platon] / web-apps / task-manager / modules / Project.php (stiahnutie)

Revízia 1.1, Thu Aug 19 09:11:49 2004 UTC (19 years, 7 months ago) by nepto

Task Manager added into repository.
It was a test project made for NUSTEP -- http://www.nustep.net/

<?php

/*
 * lib/Project.php
 *
 * Developed by Ondrej Jombik <nepto@platon.sk>
 * Copyright (c) 2004 Platon SDG, http://platon.sk/
 * Licensed under terms of GNU General Public License.
 * All rights reserved.
 *
 * Changelog:
 * 2004-06-20 - created
 *
 */

/* $Platon$ */

require_once 'DB.php';

class Project
{
    function get($project_id = 0) /* {{{ */
    {
        global $cfg, $dbh;
        $project_id = intval($project_id);
        $get_all    = ! ($project_id > 0);
        $query      = sprintf('SELECT p.*, c.name AS customer_name'
                .' FROM %s p LEFT JOIN %s c ON p.customer_id = c.id'
                .' WHERE %s ORDER BY p.started DESC',
                $cfg['tables']['projects'], $cfg['tables']['customers'],
                $get_all ? '1 = 1' : 'p.id = '.$project_id);
        $ret_ar = $dbh->getAll($query);
        return $get_all ? $ret_ar : $ret_ar[0];
    } /* }}} */

    function getList() /* {{{ */
    {
        return Project::get(0);
    } /* }}} */

    function getExtended($project_id = 0) /* {{{ */
    {
        global $cfg, $dbh;
        $ret_ar     = Project::get($project_id);
        $project_id = intval($project_id);
        $get_all    = ! ($project_id > 0);
        if (! $get_all) {
            $ret_ar = array($ret_ar);
        }
        $query_done = sprintf('SELECT project_id, COUNT(*), SUM(duration)'
                .' FROM %s WHERE %s AND state = "done"'
                .' GROUP BY project_id', $cfg['tables']['tasks'],
                $get_all ? '1 = 1' : 'project_id = '.$project_id);
        $query_opened = sprintf('SELECT project_id, COUNT(*), SUM(duration),'
                .' MIN(deadline), UNIX_TIMESTAMP(MIN(deadline))'
                .' FROM %s WHERE %s AND state != "done" AND state != "abandoned"'
                .' GROUP BY project_id', $cfg['tables']['tasks'],
                $get_all ? '1 = 1' : 'project_id = '.$project_id);
        $counts_done        = $dbh->getAssoc($query_done,   false, array(), DB_FETCHMODE_ORDERED);
        $counts_opened      = $dbh->getAssoc($query_opened, false, array(), DB_FETCHMODE_ORDERED);
        $counts_done_keys   = array_keys($counts_done);
        $counts_opened_keys = array_keys($counts_opened);
        foreach ($ret_ar as $key => $val) {
            if (in_array($val['id'], $counts_done_keys)) {
                $ret_ar[$key]['tasks_done']    = $counts_done[$val['id']][0];
                $ret_ar[$key]['duration_done'] = $counts_done[$val['id']][1];
            } else {
                $ret_ar[$key]['tasks_done']    = 0;
                $ret_ar[$key]['duration_done'] = 0;
            }
            if (in_array($val['id'], $counts_opened_keys)) {
                $ret_ar[$key]['tasks_opened']    = $counts_opened[$val['id']][0];
                $ret_ar[$key]['duration_opened'] = $counts_opened[$val['id']][1];
                $ret_ar[$key]['min_deadline']    = $counts_opened[$val['id']][2];
                $ret_ar[$key]['min_deadline_ts'] = $counts_opened[$val['id']][3];
            } else {
                $ret_ar[$key]['tasks_opened']    = 0;
                $ret_ar[$key]['duration_opened'] = 0;
                $ret_ar[$key]['min_deadline']    = '';
                $ret_ar[$key]['min_deadline_ts'] = 0;
            }
        }
        return $get_all ? $ret_ar : $ret_ar[0];
    } /* }}} */

    function getListExtended() /* {{{ */
    {
        return Project::getExtended(0);
    } /* }}} */
}

/* Modeline for ViM {{{
 * vim: set ts=4:
 * vim600: fdm=marker fdl=0 fdc=0:
 * }}} */

?>

Platon Group <platon@platon.sk> http://platon.sk/
Copyright © 2002-2006 Platon Group
Stránka používa redakčný systém Metafox
Na začiatok