phpgroupware-cvs
[Top][All Lists]
Advanced

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

[Phpgroupware-cvs] tasks/class.base.php, 1.1.2.1


From: nomail
Subject: [Phpgroupware-cvs] tasks/class.base.php, 1.1.2.1
Date: Thu, 20 May 2004 19:43:17 -0000

Update of /tasks
Added Files:
        Branch: proposal-branch
          class.base.php

date: 2004/04/17 06:24:31;  author: jengo;  state: Exp;  lines: +475 -0

Log Message:
Merged this over from the temp CVS server
=====================================================================
No syntax errors detected in -
=====================================================================
<?php
        
/**************************************************************************\
        * phpGroupWare                                                          
   *
        * http://www.phpgroupware.org                                           
   *
        * This file written by Joseph Engo <address@hidden>                *
        * Copyright (C) 2003-2004 Joseph Engo                                   
   *
        * 
-------------------------------------------------------------------------*
        * This program 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.                                            
   *
        
\**************************************************************************/

        /* $Id: class.base.php,v 1.1.2.1 2004/04/17 06:24:31 jengo Exp $ */
        /* $Source: /cvsroot/phpgroupware/tasks/Attic/class.base.php,v $ */

        $functions             = array();
        $functions['tasks_base'] = array
        (
                'type'         => 'public',
                'abstract'     => 'add something here',
                'discussion'   => 'add something here'
        );
        
        $functions['start']    = array
        (
                'type'         => 'public',
                'title'        => 'Tasks',
                'abstract'     => 'List of tasks',
                'discussion'   => 'List of tasks'
        );

        $functions['create']   = array
        (
                'type'         => 'public',
                'title'        => 'Create Task',
                'abstract'     => 'Create task entry',
                'params'       => array
                (
                        'type'            => array('type' => 'any', 'default' 
=> NOTSET, 'desc' => 'Type'),
                        'subject'         => array('type' => 'any', 'default' 
=> NOTSET, 'desc' => 'Subject'),
                        'description'     => array('type' => 'any', 'default' 
=> NOTSET, 'desc' => 'Description'),
                        'category'        => array('type' => 'any', 'default' 
=> NOTSET, 'desc' => 'Category'),
                        'priority'        => array('type' => 'any', 'default' 
=> NOTSET, 'desc' => 'Priority'),
                        'start_date'      => array('type' => 'any', 'default' 
=> NOTSET, 'desc' => 'Start date'),
                        'start_time'      => array('type' => 'any', 'default' 
=> NOTSET, 'desc' => 'start time'),
                        'end_date'        => array('type' => 'any', 'default' 
=> NOTSET, 'desc' => 'End date'),
                        'end_time'        => array('type' => 'any', 'default' 
=> NOTSET, 'desc' => 'End time'),
                        'status'          => array('type' => 'any', 'default' 
=> NOTSET, 'desc' => 'Status'),
                )
        );

        $functions['view']   = array
        (
                'type'         => 'public',
                'title'        => 'View Task',
                'abstract'     => 'View Task',
                'params'       => array
                (
                        'task_id'    => array('type' => 'number', 'default' => 
REQUIRED, 'desc' => 'Task ID number')
                )
        );

        $GLOBALS['docs']['tasks']['classes']['tasks_base'] = array
        (
                'abstract'  => 'Default class for task manager',
                'functions' => $functions
        );

        class tasks_base
        {
                var $history;

                function tasks_base()
                {
                        $GLOBALS['phpgw']->add_xsl('tasks.base');
                        $GLOBALS['phpgw']->add_xsl('api.widgets');

                        // The no_app_menu is *ONLY* a temp workaround for not 
showing the app menu
                        // durring _datamine_get(), I am currently working on 
another solution to it
                        if (! $GLOBALS['tasks_menus_loaded'] && ! 
$GLOBALS['no_app_menu'])
                        {
                                $GLOBALS['phpgw']->add_appmenu('Task manager 
menu','Add task','tasks.base.create');

                                $GLOBALS['tasks_menus_loaded'] = true;
                        }
                }

                // This is only until categorys is done
                function _temp_cat()
                {
                        return '-';
                }

                function _convert_status($status_id)
                {
                        // TODO: These should be loaded from the database, for 
custom values
                        switch ($status_id)
                        {
                                case 1:
                                        return lang('Ongoing');
                                        break;
                                case 2:
                                        return lang('Done');
                                        break;
                                case 3:
                                        return lang('Hold');
                                        break;
                                case 4:
                                        return lang('Canceled');
                                        break;
                                default:
                                        return '-';
                        }
                }

                function _convert_priority($priority_id)
                {
                        // TODO: These should be loaded from the database, for 
custom values
                        switch ($priority_id)
                        {
                                case 1:
                                        return lang('Low');
                                        break;
                                case 2:
                                        return lang('Normal');
                                        break;
                                case 3:
                                        return lang('High');
                                        break;
                                case 4:
                                        return lang('Urgent');
                                        break;
                                default:
                                        return '-';
                        }
                }

                function __get_record(&$dbresult)
                {
                        return array
                        (
                                'id'             => 
$dbresult->fields['task_id'],
                                'owner'          => 
$GLOBALS['phpgw']->accounts->cross_reference((int)$dbresult->fields['task_owner']),
                                'owner_id'       => 
$dbresult->fields['task_owner'],
                                'responsible'    => 
$GLOBALS['phpgw']->accounts->cross_reference((int)$dbresult->fields['task_responsible']),
                                'responsible_id' => 
$dbresult->fields['task_responsible'],
                                'category'       => 
$this->_temp_cat($dbresult->fields['task_category']),
                                'category_id'    => 
$dbresult->fields['task_category'],
                                'access'         => 
$dbresult->fields['task_access'],
                                'status'         => 
$this->_convert_status($dbresult->fields['task_status']),
                                'status_id'      => 
$dbresult->fields['task_status'],
                                'subject'        => 
$dbresult->fields['task_subject'],
                                'description'    => 
$dbresult->fields['task_description'],
                                'priority'       => 
$this->_convert_priority($dbresult->fields['task_priority']),
                                'priority_id'    => 
$dbresult->fields['task_priority'],
                                'start'          => 
strftime('%x',$dbresult->unixtimestamp($dbresult->fields['task_start'])) . 
date(' h:i:s a',$dbresult->unixtimestamp($dbresult->fields['task_start'])),
                                'end'            => 
strftime('%x',$dbresult->unixtimestamp($dbresult->fields['task_end'])) . date(' 
h:i:s a',$dbresult->unixtimestamp($dbresult->fields['task_end'])),
                                'modified'       => 
strftime('%x',$dbresult->unixtimestamp($dbresult->fields['task_modified'])) . 
date(' h:i:s a',$dbresult->unixtimestamp($dbresult->fields['task_modified'])),
                                'created'        => 
strftime('%x',$dbresult->unixtimestamp($dbresult->fields['task_created'])) . 
date(' h:i:s a',$dbresult->unixtimestamp($dbresult->fields['task_created']))
                        );
                }

                function start()
                {
                        $result['task_data']   = array();
                        $result['action_type'] = 'task_start';

                        $dbresult = $GLOBALS['phpgw']->db->execute("SELECT * 
from phpgw_tasks WHERE task_owner="
                                . $GLOBALS['phpgw_data']['user']['id'] . " AND 
task_dm_type='N'");

                        while (! $dbresult->EOF)
                        {
                                $result['tasks_data'][] = 
$this->__get_record(&$dbresult);
                                $dbresult->movenext();
                        }

                        return $result;
                }

                function set_cache_value($key,$value)
                {
                        if (strlen($value[$key]))
                        {
                                
$GLOBALS['phpgw_session']['phpgw_data']['statecache']['tasks.base.create'][$key]
 = $value[$key];
                        }
                }

                function __set_history_fields()
                {
                        $this->history->field_desc = array
                        (
                                'task_owner'       => lang('Owner'),
                                'task_subject'     => lang('Subject'),
                                'task_category'    => lang('Category'),
                                'task_description' => lang('Description'),
                                'task_priority'    => lang('Priority'),
                                'task_start'       => lang('Start date'),
                                'task_end'         => lang('End date'),
                                'task_status'      => lang('Status')
                        );
                }

                function create()
                {
                        $args = new safe_args();
                        $args->set('select_tab',1,'number');
                        $args->set('form_submit',NOTSET,'any');
                        $args->set('type',NOTSET,'any');
                        $args->set('subject',NOTSET,'any');
                        $args->set('category',NOTSET,'any');
                        $args->set('description',NOTSET,'any');
                        $args->set('priority',0,'any');
                        $args->set('start_date',NOTSET,'any');
                        $args->set('start_time',NOTSET,'any');
                        $args->set('end_date',NOTSET,'any');
                        $args->set('end_time',NOTSET,'any');
                        $args->set('status',NOTSET,'any');
                        $args->set('access',array('private','public'),'enum');
                        $args->set('dm_type','N','string');
                        $args = $args->get(func_get_args());

                        /*
                        $result['task'] = array
                        (
                                //'task_owner'       => $args['task_owner'],
                                'task_subject'     => $args['subject'],
                                'task_category'    => $args['category'],
                                'task_description' => $args['description'],
                                'task_priority'    => $args['priority'],
                                'task_start'       => $args['start'],
                                'task_end'         => $args['end'],
                                'task_status'      => $args['status']
                        );
                        */

                        if ($args['form_submit'] == 'True')
                        {
                                if (! strlen($args['subject']))
                                {
                                        $result['missing_fields']['subject'] = 
true;
                                        $missing_fields                      = 
true;
                                }

                                if (! strlen($args['description']))
                                {
                                        
$result['missing_fields']['description'] = true;
                                        $missing_fields                         
 = true;
                                }

                                if (! strlen($args['priority']))
                                {
                                        //$result['missing_fields']['priority'] 
= true;
                                        //$missing_fields                       
= true;
                                }

                                if ($missing_fields)
                                {
                                        $GLOBALS['msgbox']->add(lang('You 
forgot to enter some of the required fields. The missing fields have been 
marked with a *'), 'notice');
                                        //$GLOBALS['phpgw']->form_lock();
                                }
                                else
                                {
                                        $args['start']  = 
$GLOBALS['phpgw']->db->dbtimestamp(time());
                                        $args['end']    = 
$GLOBALS['phpgw']->db->dbtimestamp(time());
                                        $args['status'] = 0;

                                        $dbresult = 
$GLOBALS['phpgw']->db->execute("
                                                INSERT INTO phpgw_tasks
                                                        (task_owner,
                                                        task_responsible,
                                                        task_subject,
                                                        task_category,
                                                        task_description,
                                                        task_priority,
                                                        task_start,
                                                        task_end,
                                                        task_status,
                                                        task_access,
                                                        task_dm_type,
                                                        task_modified,
                                                        task_created)
                                                VALUES
                                                        (" . 
$GLOBALS['phpgw_data']['user']['id'] . ",
                                                        0,
                                                        '" . $args['subject'] . 
"',
                                                        " . $args['category'] . 
",
                                                        '" . 
$args['description'] . "',
                                                        " . $args['priority'] . 
",
                                                        " . $args['start'] . ",
                                                        " . $args['end'] . ",
                                                        '" . $args['status'] . 
"',
                                                        '" . 
$args['task_access'] . "',
                                                        'N',
                                                        now(),
                                                        now())");

                                        $dbresult = 
$GLOBALS['phpgw']->db->execute("SELECT * FROM phpgw_tasks "
                                                . "WHERE task_subject='" . 
$args['subject'] . "' and task_description='" . $args['description']
                                                . "' ORDER BY task_created 
desc");
                                        $task_id  = 
$dbresult->fields['task_id'];

                                        if ($task_id)
                                        {
                                                $history_data = array
                                                (
                                                        'task_owner'       => 
$dbresult->fields['task_owner'],
                                                        'task_subject'     => 
$dbresult->fields['task_subject'],
                                                        'task_category'    => 
$dbresult->fields['task_category'],
                                                        'task_description' => 
$dbresult->fields['task_description'],
                                                        'task_priority'    => 
$dbresult->fields['task_priority'],
                                                        'task_start'       => 
$dbresult->fields['task_start'],
                                                        'task_end'         => 
$dbresult->fields['task_end'],
                                                        'task_status'      => 
$dbresult->fields['task_status']
                                                );

                                                $this->history = 
createObject('api_history');
                                                $this->history->set('tasks.' . 
$task_id,$history_data,array());
                                                
$GLOBALS['msgbox']->add(lang('Task has been successfully created'),'notice');

                                                if ($args['dm_type'] == 'D')
                                                {
                                                        
execMethod('api.datamine._set',array('location_from' => 
$args['datamine_location'], 'location_to' => 'tasks.base.' . $task_id));
                                                }

                                                return $this->view($task_id);
                                        }
                                }
                        }
                        else
                        {
                                $this->set_cache_value('subject',$args);
                                $this->set_cache_value('description',$args);
                                $this->set_cache_value('priority',$args);
                                $this->set_cache_value('start_date',$args);
                                $this->set_cache_value('start_time',$args);
                                $this->set_cache_value('end_date',$args);
                                $this->set_cache_value('end_time',$args);
                                $this->set_cache_value('status',$args);         
                

                                
$GLOBALS['phpgw_session']['phpgw_data']['statecache']['tasks.base.create'] = 
array
                                (
                                        'subject'     => $args['subject'],
                                        'description' => $args['description'],
                                        'category'    => $args['category'],
                                        'priority'    => $args['priority'],
                                        'start_date'  => $args['start_date'],
                                        'start_time'  => $args['start_time'],
                                        'end_date'    => $args['end_date'],
                                        'end_time'    => $args['end_time'],
                                        'status'      => $args['status']
                                );

                                $result['task_data'] = 
$GLOBALS['phpgw_session']['phpgw_data']['statecache']['tasks.base.create'];

                                //$GLOBALS['phpgw']->form_lock();
                        }

                        $selected_tab[$args['select_tab'] - 1] = 1;

                        $result['tab_widget'] = array(
                                0 => array
                                (
                                        'title'   => lang('Description'),
                                        'op'      => 
'tasks.base.create&select_tab=1',
                                        'current' => ($selected_tab[0] ? 
$selected_tab[0] : 0)
                                ),
                                1 => array
                                (
                                        'title'   => lang('Delegation'),
                                        'op'      => 
'tasks.base.create&select_tab=2',
                                        'current' => ($selected_tab[1] ? 
$selected_tab[1] : 0)
                                ),
                                2 => array
                                (
                                        'title'   => lang('ACL'),
                                        'op'      => 
'tasks.base.create&select_tab=3',
                                        'current' => ($selected_tab[2] ? 
$selected_tab[2] : 0)
                                )
                        );

                        //$GLOBALS['phpgw']->form_lock();
                        $result['current_tab_index'] = $args['select_tab'];
                        $result['action_type'] = 'task_create';

                        return $result;
                }

                function view()
                {
                        $args = new safe_args();
                        $args->set('task_id',REQUIRED,'number');
                        $args->set('select_tab',1,'number');
                        $args = $args->get(func_get_args());

                        $dbresult = $GLOBALS['phpgw']->db->execute("SELECT * 
from phpgw_tasks WHERE task_owner="
                                . $GLOBALS['phpgw_data']['user']['id'] . " AND 
task_id=" . $args['task_id']);

                        if (! $GLOBALS['phpgw']->acl->check('tasks.' . 
$args['task_id'],PHPGW_ACL_READ))
                        {
                                
$GLOBALS['phpgw']->interface->access_denied('this record');
                                return array();
                        }
                        else if ($db->EOF)
                        {
                                $GLOBALS['msgbox']->add(lang('Record not 
found'),'notice');
                                return array();
                        }

                        $GLOBALS['phpgw']->add_appmenu('Task manager 
menu','Edit task','tasks.base.edit&task_id=' . $args['task_id']);
                        $GLOBALS['phpgw']->add_appmenu('Task manager 
menu','Delete task','tasks.base.delete&task_id=' . $args['task_id']);

                        $result['action_type']      = 'task_view';
                        $result['task_data']        = 
$this->__get_record(&$dbresult);
                        $this->history              = 
createObject('api_history');
                        $this->__set_history_fields();

                        $this->history->field_execMethod['task_category'] = 
'tasks.base._temp_cat';
                        $this->history->field_execMethod['task_status']   = 
'tasks.base._convert_status';
                        $this->history->field_execMethod['task_priority'] = 
'tasks.base._convert_priority';
                        //$this->history->field_execMethod['task_owner']    = 
'api.accounts.id2name';

                        //echo "TASK: " . $args['task_id'];
                        $result['history_data'] = $this->history->get('tasks.' 
. $args['task_id']);

                        if (! $args['select_tab'])
                        {
                                $args['select_tab'] = 1;
                        }
                        $selected_tab[$args['select_tab'] - 1] = 1;

                        $result['tab_widget'] = array
                        (
                                0 => array
                                (
                                        'title'   => lang('Description'),
                                        'op'      => 
'tasks.base.view&select_tab=1&task_id=' . $args['task_id'],
                                        'current' => ($selected_tab[0] ? 
$selected_tab[0] : 0)
                                ),
                                1 => array
                                (
                                        'title'   => lang('Delegation'),
                                        'op'      => 
'tasks.base.view&select_tab=2&task_id=' . $args['task_id'],
                                        'current' => ($selected_tab[1] ? 
$selected_tab[1] : 0)
                                ),
                                2 => array
                                (
                                        'title'   => lang('ACL'),
                                        'op'      => 
'tasks.base.view&select_tab=3&task_id=' . $args['task_id'],
                                        'current' => ($selected_tab[2] ? 
$selected_tab[2] : 0)
                                )
                        );

                        $result['current_tab_index'] = $args['select_tab'];
                        $result['datamine']          = 
execMethod('api.datamine._get','tasks.base.' . $args['task_id']);

                        return $result;
                }

                function _datamine_get()
                {
                        $args = new safe_args();
                        $args->set('task_id',REQUIRED,'number');
                        $args = $args->get(func_get_args());

                        $GLOBALS['phpgw']->add_xsl('tasks.widgets');

                        // FIXME: This needs ACL check and it needs to check 
for task_dm_type of D
                        $dbresult = $GLOBALS['phpgw']->db->execute("SELECT * 
from phpgw_tasks WHERE task_owner="
                                . $GLOBALS['phpgw_data']['user']['id']);

                        return $this->__get_record(&$dbresult);
                }
        }





reply via email to

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