8ac75fabd09c168cc9f8e4c04458f014178ee498
[tine20] / tine20 / SimpleFAQ / Model / Faq.php
1 <?php
2 /**
3  * class to hold FAQ data
4  * 
5  * @package     SimpleFAQ
6  * @license     http://www.gnu.org/licenses/agpl.html AGPL Version 3
7  * @author      Patrick Ryser <patrick.ryser@gmail.com>
8  * @copyright   Copyright (c) 2007-2011 Metaways Infosystems GmbH (http://www.metaways.de)
9  */
10
11 /**
12  * SimpleFAQ Class to hold faq data
13  * 
14  * @package     SimpleFAQ
15  */
16 class SimpleFAQ_Model_Faq extends Tinebase_Record_Abstract
17 {
18     /**
19      * key in $_validators/$_properties array for the filed which
20      * represents the identifier
21      *
22      * @var string
23      */
24     protected $_identifier = 'id';
25
26     /**
27      * application the record belongs to
28      *
29      * @var string
30      */
31     protected $_application = 'SimpleFAQ';
32
33         /**
34      * if foreign Id fields should be resolved on search and get from json
35      * should have this format: 
36      *     array('Calendar_Model_Contact' => 'contact_id', ...)
37      * or for more fields:
38      *     array('Calendar_Model_Contact' => array('contact_id', 'customer_id), ...)
39      * (e.g. resolves contact_id with the corresponding Model)
40      * 
41      * @var array
42      */
43     protected static $_resolveForeignIdFields = array(
44         'Tinebase_Model_User' => array('created_by', 'last_modified_by')
45     ); 
46
47      /**
48      * list of zend validator
49      *
50      * this validators get used when validating user generated content with Zend_Input_Filter
51      *
52      * @var array
53      */
54      protected $_validators = array(
55          'id'                   => array(Zend_Filter_Input::ALLOW_EMPTY => true,),
56          'container_id'         => array(Zend_Filter_Input::ALLOW_EMPTY => false, 'presence'=>'required'),
57          'faqstatus_id'         => array(Zend_Filter_Input::ALLOW_EMPTY => false, 'presence'=>'required', 'default' => 1),
58          'faqtype_id'           => array(Zend_Filter_Input::ALLOW_EMPTY => false, 'presence'=>'required', 'default' => 1),
59          'answer'               => array(Zend_Filter_Input::ALLOW_EMPTY => true,),
60          'question'             => array(Zend_Filter_Input::ALLOW_EMPTY => true,),
61          'created_by'           => array(Zend_Filter_Input::ALLOW_EMPTY => true,),
62          'creation_time'        => array(Zend_Filter_Input::ALLOW_EMPTY => true,),
63          'last_modified_by'     => array(Zend_Filter_Input::ALLOW_EMPTY => true,),
64          'last_modified_time'   => array(Zend_Filter_Input::ALLOW_EMPTY => true,),
65          'is_deleted'           => array(Zend_Filter_Input::ALLOW_EMPTY => true,),
66          'deleted_time'         => array(Zend_Filter_Input::ALLOW_EMPTY => true,),
67          'deleted_by'           => array(Zend_Filter_Input::ALLOW_EMPTY => true,),
68          'tags'                 => array(Zend_Filter_Input::ALLOW_EMPTY => true,),
69          'relations'            => array(Zend_Filter_Input::ALLOW_EMPTY => true, Zend_Filter_Input::DEFAULT_VALUE => NULL),
70          'notes'                => array(Zend_Filter_Input::ALLOW_EMPTY => true, Zend_Filter_Input::DEFAULT_VALUE => NULL),
71          
72          'attachments'           => array(Zend_Filter_Input::ALLOW_EMPTY => true),
73      );
74
75      /**
76      * datetime fields
77      *
78      * @var array
79      */
80      protected $_datetimeFields = array (
81         'creation_time',
82         'last_modified_time',
83         'deleted_time'
84      );
85
86      /**
87      * fills a record from json data
88      *
89      * @param string $_data json encoded data
90      * @return void
91      */
92      public function setFromJson($_data)
93      {
94         parent::setFromJson($_data);
95
96         // do something here if you like
97      }
98 }