cleanup remove tabs
[tine20] / tine20 / Projects / Model / Project.php
1 <?php
2 /**
3  * class to hold Project data
4  * 
5  * @package     Projects
6  * @subpackage  Model
7  * @license     http://www.gnu.org/licenses/agpl.html AGPL Version 3
8  * @author      Philipp Schüle <p.schuele@metaways.de>
9  * @copyright   Copyright (c) 2011-2012 Metaways Infosystems GmbH (http://www.metaways.de)
10  * 
11  */
12
13 /**
14  * class to hold Project data
15  * 
16  * @package     Projects
17  * @subpackage  Model
18  */
19 class Projects_Model_Project extends Tinebase_Record_Abstract
20 {
21     /**
22      * key in $_validators/$_properties array for the filed which 
23      * represents the identifier
24      * 
25      * @var string
26      */
27     protected $_identifier = 'id';
28     
29     /**
30      * application the record belongs to
31      *
32      * @var string
33      */
34     protected $_application = 'Projects';
35     
36     /**
37      * if foreign Id fields should be resolved on search and get from json
38      * should have this format: 
39      *     array('Calendar_Model_Contact' => 'contact_id', ...)
40      * or for more fields:
41      *     array('Calendar_Model_Contact' => array('contact_id', 'customer_id), ...)
42      * (e.g. resolves contact_id with the corresponding Model)
43      * 
44      * @var array
45      */
46     protected static $_resolveForeignIdFields = array(
47         'Tinebase_Model_User' => array('created_by', 'last_modified_by')
48     );    
49
50     /**
51      * list of zend validator
52      * 
53      * this validators get used when validating user generated content with Zend_Input_Filter
54      *
55      * @var array
56      */
57     protected $_validators = array(
58         'id'                    => array(Zend_Filter_Input::ALLOW_EMPTY => true),
59         'number'                => array(Zend_Filter_Input::ALLOW_EMPTY => true),
60         'title'                 => array(Zend_Filter_Input::ALLOW_EMPTY => false, 'presence'=>'required'),
61         'description'           => array(Zend_Filter_Input::ALLOW_EMPTY => true),
62         'status'                => array(Zend_Filter_Input::ALLOW_EMPTY => true),
63         'container_id'          => array(Zend_Filter_Input::ALLOW_EMPTY => false, 'presence'=>'required'),
64     // modlog information
65         'created_by'            => array(Zend_Filter_Input::ALLOW_EMPTY => true),
66         'creation_time'         => array(Zend_Filter_Input::ALLOW_EMPTY => true),
67         'last_modified_by'      => array(Zend_Filter_Input::ALLOW_EMPTY => true),
68         'last_modified_time'    => array(Zend_Filter_Input::ALLOW_EMPTY => true),
69         'is_deleted'            => array(Zend_Filter_Input::ALLOW_EMPTY => true),
70         'deleted_time'          => array(Zend_Filter_Input::ALLOW_EMPTY => true),
71         'deleted_by'            => array(Zend_Filter_Input::ALLOW_EMPTY => true),
72         'seq'                   => array(Zend_Filter_Input::ALLOW_EMPTY => true),
73     // relations (linked Projects_Model_Project records) and other metadata
74         'relations'             => array(Zend_Filter_Input::ALLOW_EMPTY => true, Zend_Filter_Input::DEFAULT_VALUE => NULL),
75         'tags'                  => array(Zend_Filter_Input::ALLOW_EMPTY => true),    
76         'notes'                 => array(Zend_Filter_Input::ALLOW_EMPTY => true),
77         
78         'attachments'           => array(Zend_Filter_Input::ALLOW_EMPTY => true),
79     );
80
81     /**
82      * name of fields containing datetime or an array of datetime information
83      *
84      * @var array list of datetime fields
85      */    
86     protected $_datetimeFields = array(
87         'creation_time',
88         'last_modified_time',
89         'deleted_time'
90     );
91     
92     /**
93      * @see Tinebase_Record_Abstract
94      */
95     protected static $_relatableConfig = array(
96         array('relatedApp' => 'Addressbook', 'relatedModel' => 'Contact',
97             'keyfieldConfig' => array('from' => 'own', 'name' => 'projectAttendeeRole'),
98             'default' => array('type' => 'COWORKER', 'own_degree' => 'sibling')
99             )
100         );
101 }
102