/**
*
*/
function xanth_entry_type_admin_entry_type_add($hook_primary_id, $hook_secondary_id, $arguments)
{
    if (!xUser::check_current_user_access('manage entry type')) {
        return xSpecialPage::access_denied();
    }
    //create form
    $form = new xForm('?p=admin/entry_type/add');
    $form->elements[] = new xFormElementTextField('entry_type_name', 'Name', '', '', TRUE, new xInputValidatorTextNameId(32));
    //view modes
    $modes = xViewMode::find_by_element('entry');
    $options = array();
    $options['[theme default]'] = '0';
    foreach ($modes as $mode) {
        $options[$mode->name] = $mode->id;
    }
    $form->elements[] = new xFormElementOptions('entry_type_view_mode', 'View mode', '', '', $options, FALSE, FALSE, new xInputValidatorInteger());
    //submit buttom
    $form->elements[] = new xFormSubmit('submit', 'Add');
    $ret = $form->validate_input();
    if (isset($ret->valid_data['submit'])) {
        if (empty($ret->errors)) {
            $entry_type = new xEntryType($ret->valid_data['entry_type_name'], $ret->valid_data['entry_type_view_mode']);
            $entry_type->insert();
            return new xPageContent('Entry type created', 'Entry type created');
        } else {
            foreach ($ret->errors as $error) {
                xanth_log(LOG_LEVEL_USER_MESSAGE, $error);
            }
        }
    }
    return new xPageContent('Create entry', $form->render());
}
function xanth_db_install_entry_type()
{
    //entry type
    xanth_db_query("\r\n\t\tCREATE TABLE entry_type (\r\n\t\tname VARCHAR(32) NOT NULL,\r\n\t\tview_mode_id INT UNSIGNED,\r\n\t\tPRIMARY KEY (name),\r\n\t\tINDEX(view_mode_id),\r\n\t\tFOREIGN KEY (view_mode_id) REFERENCES view_mode(id) ON DELETE SET NULL\r\n\t\t)TYPE=InnoDB");
    $access = new xAccessRule('manage entry type', 'Entry Type');
    $access->insert();
    //some default tipes
    $type = new xEntryType('StaticEntry');
    $type->insert();
}