array(TYPE_UINT, REQ_AUTO), 'title' => array(TYPE_STR, REQ_YES), 'charset' => array(TYPE_STR, REQ_YES), 'direction' => array(TYPE_STR, REQ_NO), 'userselect' => array(TYPE_BOOL, REQ_NO), 'langcode' => array(TYPE_STR, REQ_YES) ); /** * Table * @var string */ protected $table = 'language'; /** * Table prefix * @var string */ protected $prefix = TABLE_PREFIX; /** * Post-insert */ protected function post_insert() { build_languages(); } /** * Post-update */ protected function post_update() { build_languages(); } /** * Pre-delete */ protected function pre_delete() { $count = BSApp::$db->queryFirst("SELECT COUNT(*) AS count FROM " . TABLE_PREFIX . "language"); if ($count['count'] < 2) { throw new FieldException(T('At least one language needs to be present. Deleting this language would violate that.'), 'languageid'); } if (bugdar::$options['defaultlanguage'] == $this->values['languageid']) { throw new FieldException(T('You cannot delete the default language. Please select another language to be the default language and then delete this one.'), 'languageid'); } } /** * Post-delete */ protected function post_delete() { build_languages(); } /** * Verify: direction */ protected function validate_direction($field) { if (!in_array($this->values['direction'], array('ltr', 'rtl'))) { $this->_error(new FieldError(T('The direction must be ltr (left-to-right) or rtl (right-to-left)'), $field)); return false; } return true; } /** * Validate: languageid */ protected function validate_languageid($field) { return $this->_verifyIsNotZero($field); } /** * Validate: title */ protected function validate_title($field) { return $this->_verifyIsNotEmpty($field); } } ?>