Tinebase_Export - add customfield, keyfield, virtual field resolving
[tine20] / tine20 / Calendar / Model / Resource.php
1 <?php
2 /**
3  * Tine 2.0
4  * 
5  * @package     Calendar
6  * @license     http://www.gnu.org/licenses/agpl.html AGPL Version 3
7  * @author      Cornelius Weiss <c.weiss@metaways.de>
8  * @copyright   Copyright (c) 2009 Metaways Infosystems GmbH (http://www.metaways.de)
9  *
10  */
11
12 /**
13  * Model of a resource
14  * 
15  * @package Calendar
16  */
17 class Calendar_Model_Resource extends Tinebase_Record_Abstract
18 {
19
20     /**
21      * key in $_validators/$_properties array for the filed which 
22      * represents the identifier
23      * 
24      * @var string
25      */
26     protected $_identifier = 'id';
27     
28     /**
29      * application the record belongs to
30      *
31      * @var string
32      */
33     protected $_application = 'Calendar';
34     
35     /**
36      * validators
37      *
38      * @var array
39      */
40     protected $_validators = array(
41         // tine record fields
42         'id'                   => array('allowEmpty' => true,  'Alnum'),
43         'container_id'         => array('allowEmpty' => true,  'Alnum'),
44         'created_by'           => array('allowEmpty' => true,         ),
45         'creation_time'        => array('allowEmpty' => true          ),
46         'last_modified_by'     => array('allowEmpty' => true          ),
47         'last_modified_time'   => array('allowEmpty' => true          ),
48         'is_deleted'           => array('allowEmpty' => true          ),
49         'deleted_time'         => array('allowEmpty' => true          ),
50         'deleted_by'           => array('allowEmpty' => true          ),
51         'seq'                  => array('allowEmpty' => true,  'Int'  ),
52         // resource specific fields
53         'name'                 => array('allowEmpty' => true          ),
54         'description'          => array('allowEmpty' => true          ),
55         'email'                => array('allowEmpty' => true          ),
56         'max_number_of_people' => array(Zend_Filter_Input::ALLOW_EMPTY => true, Zend_Filter_Input::DEFAULT_VALUE => NULL),
57         'type'                 => array('allowEmpty' => false         ),
58         'is_location'          => array('allowEmpty' => true          ),
59         // location is a virtual field
60         'location'             => array('allowEmpty' => true          ),
61         'status'               => array('allowEmpty' => true          ),
62         'busy_type'            => array('allowEmpty' => true          ),
63         'suppress_notification'=> array('allowEmpty' => true          ),
64         'tags'                 => array('allowEmpty' => true          ),
65         'notes'                => array('allowEmpty' => true          ),
66         'grants'               => array('allowEmpty' => true          ),
67         'attachments'           => array(Zend_Filter_Input::ALLOW_EMPTY => true),
68         'relations'            => array(Zend_Filter_Input::ALLOW_EMPTY => true, Zend_Filter_Input::DEFAULT_VALUE => NULL),
69         'customfields'         => array(Zend_Filter_Input::ALLOW_EMPTY => true, Zend_Filter_Input::DEFAULT_VALUE => array()),
70     );
71     
72     /**
73      * datetime fields
74      *
75      * @var array
76      */
77     protected $_datetimeFields = array(
78         'creation_time', 
79         'last_modified_time', 
80         'deleted_time', 
81     );
82
83     protected static $_relatableConfig = array(
84         array('relatedApp' => 'Addressbook', 'relatedModel' => 'Contact', 'config' => array(
85             array('type' => 'STANDORT', 'degree' => 'child', 'text' => 'Standort', 'max' => '0:0'),
86         )),
87     );
88 }