/**
*
*/
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_settings_manage_settings($hook_primary_id, $hook_secondary_id, $arguments)
{
    if (!xUser::check_current_user_access('manage settings')) {
        return xSpecialPage::access_denied();
    }
    $form = new xForm('?p=admin/settings');
    $form->elements[] = new xFormElementTextField('site_name', 'Site name', '', xSettings::get('site_name'), FALSE, new xInputValidatorTextNoTags(256));
    $form->elements[] = new xFormElementTextField('site_description', 'Site description', '', xSettings::get('site_description'), FALSE, new xInputValidatorTextNoTags(512));
    $form->elements[] = new xFormElementTextField('site_keywords', 'Site keywords', '', xSettings::get('site_keywords'), FALSE, new xInputValidatorTextNoTags(128));
    $form->elements[] = new xFormElementTextField('site_theme', 'Site theme', '', xSettings::get('site_theme'), FALSE, new xInputValidatorTextNoTags(128));
    $form->elements[] = new xFormSubmit('submit', 'submit');
    $ret = $form->validate_input();
    if (isset($ret->valid_data['submit'])) {
        if (empty($ret->errors)) {
            xSettings::set('site_name', $ret->valid_data['site_name']);
            xSettings::set('site_description', $ret->valid_data['site_description']);
            xSettings::set('site_keywords', $ret->valid_data['site_keywords']);
            xSettings::set('site_theme', $ret->valid_data['site_theme']);
            xSettings::save();
            return new xPageContent('Manage settings', 'Settings updated');
        } else {
            foreach ($ret->errors as $error) {
                xanth_log(LOG_LEVEL_USER_MESSAGE, $error);
            }
        }
    }
    return new xPageContent('Manage settings', $form->render());
}
Ejemplo n.º 3
0
function xanth_page_page_creation($hook_primary_id, $hook_secondary_id)
{
    //retrieve path
    $path = xXanthPath::get_current();
    if ($path == NULL) {
        xanth_log(LOG_LEVEL_ERROR, 'Invalid xanth path', 'page', __FUNCTION__);
    }
    $page = new xPage($path);
    echo $page->render();
}
Ejemplo n.º 4
0
/**
*
*/
function xanth_register_mono_hook($hook_primary_id, $hook_secondary_id, $hook_function)
{
    global $xanth_mono_hooks;
    $hook_id = $hook_primary_id . $hook_secondary_id;
    if (empty($xanth_mono_hooks[$hook_id])) {
        $xanth_mono_hooks[$hook_id] = $hook_function;
    } else {
        xanth_log(LOG_LEVEL_WARNING, "Mono hook collision detected.Hook function {$hook_function} is trying to overwrite " . $xanth_mono_hooks[$hook_id] . " for hook id '{$hook_primary_id}:{$hook_secondary_id}'", 'hook');
    }
}
 /**
  * Returns an array of xComponent objects  representing all existing compoenents \n
  */
 function find_existing()
 {
     $components = array();
     //read additional module directory
     $dir = './engine/components';
     $dir_list = xanth_list_dirs($dir);
     if (is_array($dir_list)) {
         foreach ($dir_list as $raw_component) {
             $components[] = new xComponent($raw_component['path'], $raw_component['name']);
         }
     } else {
         xanth_log(LOG_LEVEL_FATAL_ERROR, "Component directory {$dir} not found", "Core", __FUNCTION__);
     }
     return $components;
 }
 /**
  * Returns an array of xModule objects  representing all existing modules \n
  */
 function find_existing()
 {
     $modules = array();
     //read additional module directory
     $dir = './modules/';
     $dir_list = xanth_list_dirs($dir);
     if (is_array($dir_list)) {
         foreach ($dir_list as $raw_module) {
             $modules[] = new xModule($raw_module['path'], $raw_module['name']);
         }
     } else {
         xanth_log(LOG_LEVEL_FATAL_ERROR, "Module directory {$dir} not found", "Core", __FILE__, __LINE__);
     }
     return $modules;
 }
function xanth_category_admin_category_create($hook_primary_id, $hook_secondary_id, $arguments)
{
    if (!xUser::check_current_user_access('manage category')) {
        return xSpecialPage::access_denied();
    }
    //create form
    $form = new xForm('?p=admin/category/create');
    $form->elements[] = new xFormElementTextField('cat_title', 'Title', '', '', TRUE, new xInputValidatorTextNoTags(256));
    $form->elements[] = new xFormElementTextArea('cat_description', 'Description', '', '', TRUE, new xInputValidatorText(-1));
    //types
    $types = xEntryType::find_all();
    $options = array();
    foreach ($types as $type) {
        $options[$type->name] = $type->name;
    }
    $form->elements[] = new xFormElementOptions('entry_types', 'Select type', '', '', $options, TRUE, TRUE, new xInputValidatorTextNameId(32));
    //parent category
    $categories = xCategory::find_all();
    $options = array();
    $options['[no parent]'] = '0';
    foreach ($categories as $category) {
        $options[$category->title] = $category->id;
    }
    $form->elements[] = new xFormElementOptions('parent_category', 'Parent category', '', '', $options, FALSE, FALSE, new xInputValidatorInteger());
    //view modes
    $modes = xViewMode::find_by_element('category');
    $options = array();
    $options['[theme default]'] = '0';
    foreach ($modes as $mode) {
        $options[$mode->name] = $mode->id;
    }
    $form->elements[] = new xFormElementOptions('category_view_mode', 'View mode', '', '', $options, FALSE, FALSE, new xInputValidatorInteger());
    //submit buttom
    $form->elements[] = new xFormSubmit('submit', 'Create');
    $ret = $form->validate_input();
    if (isset($ret->valid_data['submit'])) {
        if (empty($ret->errors)) {
            $cat = new xCategory(NULL, $ret->valid_data['cat_title'], $ret->valid_data['entry_types'], $ret->valid_data['cat_description'], $ret->valid_data['category_view_mode'], $ret->valid_data['parent_category']);
            $cat->insert();
            return new xPageContent('Category created', 'Category created');
        } else {
            foreach ($ret->errors as $error) {
                xanth_log(LOG_LEVEL_USER_MESSAGE, $error);
            }
        }
    }
    return new xPageContent('Create category', $form->render());
}
Ejemplo n.º 8
0
function xanth_user_user_login($hook_primary_id, $hook_secondary_id, $arguments)
{
    $form = new xForm('?p=user/login');
    $form->elements[] = new xFormElementTextField('username', 'Username', '', '', TRUE, new xInputValidatorText(256));
    $form->elements[] = new xFormElementPassword('password', 'Password', '', TRUE, new xInputValidatorText(256));
    $form->elements[] = new xFormSubmit('submit', 'login');
    $ret = $form->validate_input();
    if (isset($ret->valid_data['submit'])) {
        if (empty($ret->errors)) {
            $user = new xUser('', $ret->valid_data['username']);
            if ($user->login($ret->valid_data['password'], TRUE)) {
                return new xPageContent("User login", 'Logged in');
            }
        } else {
            foreach ($ret->errors as $error) {
                xanth_log(LOG_LEVEL_USER_MESSAGE, $error);
            }
        }
    }
    return new xPageContent("User login", $form->render());
}
 /**
  *
  */
 function get_view_mode_procedure($element)
 {
     if (isset($this->themed_elements[$element])) {
         $result = xanth_db_query("SELECT * FROM view_mode WHERE id = %d", $this->themed_elements[$element]);
         if ($row = xanth_db_fetch_object($result)) {
             return $row->display_procedure;
         }
         return NULL;
     } else {
         //return the default view mode for element
         $result = xanth_db_query("SELECT * FROM view_mode WHERE relative_visual_element = '%s' AND default_for_element = %d", $element, TRUE);
         if ($row = xanth_db_fetch_object($result)) {
             return $row->display_procedure;
         }
         xanth_log(LOG_LEVEL_FATAL_ERROR, 'Default view mode for visual element ' . $element . ' not found', __CLASS__ . '::' . __FUNCTION__);
         return NULL;
     }
 }
Ejemplo n.º 10
0
 /**
  *
  */
 function access_denied()
 {
     xanth_log(LOG_LEVEL_ERROR, "Access denied");
     return new xPageContent("Access denied", '');
 }
function xanth_view_mode_admin_view_mode_edit($hook_primary_id, $hook_secondary_id, $arguments)
{
    if (!xUser::check_current_user_access('manage view_mode')) {
        return xSpecialPage::access_denied();
    }
    if (empty($arguments[0])) {
        new xPageContent('Edit View Mode', 'Wich view mode should edit?');
    }
    $form = new xForm('?p=admin/view_mode/edit//' . $arguments[0]);
    $view_mode = xViewMode::get($arguments[0]);
    $form->elements[] = new xFormElementHidden('view_mode_id', 'View Mode', $arguments[0], FALSE, new xInputValidatorInteger());
    $form->elements[] = new xFormElementTextField('view_mode_name', 'Name', '', $view_mode->name, FALSE, new xInputValidatorTextNoTags(32));
    //view elements option
    $velems = xVisualElement::find_all();
    $voptions = array();
    foreach ($velems as $velem) {
        $voptions[$velem->name] = $velem->name;
    }
    $form->elements[] = new xFormElementTextArea('view_mode_procedure', 'Procedure', '', $view_mode->display_procedure, FALSE, new xInputValidatorText(NULL));
    $form->elements[] = new xFormSubmit('submit', 'submit');
    $ret = $form->validate_input();
    if (isset($ret->valid_data['submit'])) {
        if (empty($ret->errors)) {
            $view_mode->name = $ret->valid_data['view_mode_name'];
            $view_mode->display_procedure = $ret->valid_data['view_mode_procedure'];
            $view_mode->update();
            return new xPageContent('Edit View Mode', 'View mode modified');
        } else {
            foreach ($ret->errors as $error) {
                xanth_log(LOG_LEVEL_USER_MESSAGE, $error);
            }
        }
    }
    return new xPageContent('Edit View Mode', $form->render());
}
Ejemplo n.º 12
0
function xanth_theme_admin_theme_edit($hook_primary_id, $hook_secondary_id, $arguments)
{
    if (!xUser::check_current_user_access('manage theme')) {
        return xSpecialPage::access_denied();
    }
    if (empty($arguments[0])) {
        new xPageContent('Edit Theme', 'Wich theme should edit?');
    }
    $form = new xForm('?p=admin/theme/edit//' . $arguments[0]);
    $form->elements[] = new xFormElementHidden('theme_name', 'Theme Name', $arguments[0], FALSE, new xInputValidatorTextNameId(32));
    //iterate every registered visual element
    $edit_theme = xTheme::get($arguments[0]);
    $visual_elements = xVisualElement::find_all();
    foreach ($visual_elements as $visual_element) {
        //now iterate every registered view mode
        $view_modes = xViewMode::find_by_element($visual_element->name);
        $options = array();
        $default = '';
        foreach ($view_modes as $view_mode) {
            $options[$view_mode->name] = $view_mode->id;
            if (isset($edit_theme->themed_elements[$visual_element->name])) {
                $default = $edit_theme->themed_elements[$visual_element->name];
            } elseif ($view_mode->default_for_element) {
                $default = $view_mode->id;
            }
        }
        $form->elements[] = new xFormElementHidden('visual_elements', 'Visual elements', $visual_element->name, TRUE, new xInputValidatorTextNameId(32));
        $form->elements[] = new xFormElementOptions('view_mode_' . $visual_element->name, 'View Mode for v.e. ' . $visual_element->name, '', $default, $options, FALSE, FALSE, new xInputValidatorInteger());
    }
    $form->elements[] = new xFormSubmit('submit', 'submit');
    $ret = $form->validate_input();
    if (isset($ret->valid_data['submit'])) {
        if (empty($ret->errors)) {
            //process form
            $themed_elements = array();
            foreach ($ret->valid_data['visual_elements'] as $vename) {
                $themed_elements[$vename] = $ret->valid_data['view_mode_' . $vename];
            }
            $theme = new xTheme($ret->valid_data['theme_name'], $themed_elements);
            $theme->update();
            return new xPageContent('Edit Theme', 'Theme Edited');
        } else {
            foreach ($ret->errors as $error) {
                xanth_log(LOG_LEVEL_USER_MESSAGE, $error);
            }
        }
    }
    return new xPageContent('Edit Theme', $form->render());
}
Ejemplo n.º 13
0
/**
 * Callback function that log errors,warnigs,and notices. Note that in xanthine this is called only from code where core.php.inc is not included
 * and from unsuppressed php error, for other needs use xanth_log instead.
 */
function xanth_php_error_handler($errno, $message, $filename, $line)
{
    if ($errno == E_USER_ERROR) {
        xanth_log(LOG_LEVEL_ERROR, $message, 'PHP', $filename, $line);
    } elseif ($errno == E_USER_WARNING || $errno == E_WARNING || $errno == E_NOTICE) {
        xanth_log(LOG_LEVEL_WARNING, $message, 'PHP', $filename, $line);
    } elseif ($errno == E_USER_NOTICE) {
        xanth_log(LOG_LEVEL_NOTICE, $message, 'PHP', $filename, $line);
    }
}
Ejemplo n.º 14
0
function xanth_entry_admin_entry_create($hook_primary_id, $hook_secondary_id, $arguments)
{
    if (!xUser::check_current_user_access('create entry')) {
        return xSpecialPage::access_denied();
    }
    //create form
    $form = new xForm('?p=admin/entry/create');
    //types
    $types = xEntryType::find_all();
    $options = array();
    foreach ($types as $type) {
        $options[$type->name] = $type->name;
    }
    $form->elements[] = new xFormElementOptions('entry_type', 'Select type', '', '', $options, FALSE, TRUE, new xInputValidatorTextNameId(32));
    //title
    $form->elements[] = new xFormElementTextField('content_title', 'Title', '', '', TRUE, new xInputValidatorTextNoTags(256));
    //body
    $form->elements[] = new xFormElementTextArea('content_body', 'Body', '', '', TRUE, new xInputValidatorText(256));
    //content formats
    $content_formats = xContentFormat::find_all();
    $content_formats_radio_group = new xFormRadioGroup(array(), 'Content format');
    foreach ($content_formats as $content_format) {
        $content_formats_radio_group->elements[] = new xFormElementRadio('content_format', $content_format->name, $content_format->description, $content_format->name, FALSE, TRUE, new xInputValidatorText(64));
    }
    $content_formats_radio_group->elements[0]->checked = TRUE;
    $form->elements[] = $content_formats_radio_group;
    //categories
    $categories = xCategory::find_all();
    $options = array();
    foreach ($categories as $category) {
        $options[$category->title] = $category->id;
    }
    $form->elements[] = new xFormElementOptions('entry_categories', 'Categories', '', '', $options, TRUE, FALSE, new xInputValidatorInteger());
    //parameters
    $parameters = new xFormGroup(array(), 'Parameters');
    $parameters->elements[] = new xFormElementCheckbox('param_published', 'Published', '', '1', TRUE, FALSE, new xInputValidatorInteger());
    $form->elements[] = $parameters;
    //metadata
    $metadata = new xFormGroup(array(), 'Metadata');
    $metadata->elements[] = new xFormElementTextField('meta_description', 'Description', '', '', FALSE, new xInputValidatorTextNoTags(512));
    $metadata->elements[] = new xFormElementTextField('meta_keywords', 'Keywords', '', '', FALSE, new xInputValidatorTextNoTags(128));
    $form->elements[] = $metadata;
    //submit buttom
    $form->elements[] = new xFormSubmit('submit', 'Create');
    $ret = $form->validate_input();
    if (isset($ret->valid_data['submit'])) {
        if (empty($ret->errors)) {
            //no error,lets create the entry
            $author = xUser::get_current_username() !== NULL ? xUser::get_current_username() : 'anonymous';
            //translate categories
            $cat_ids = $ret->valid_data['entry_categories'];
            $categories = array();
            if (!empty($cat_ids)) {
                foreach ($cat_ids as $cat_id) {
                    $categories[] = new xCategory($cat_id);
                }
            }
            $entry = new xEntry(NULL, $ret->valid_data['content_title'], $ret->valid_data['entry_type'], $author, $ret->valid_data['content_body'], $ret->valid_data['content_format'], $ret->valid_data['param_published'], $ret->valid_data['meta_description'], $ret->valid_data['meta_keywords'], $categories);
            $entry->insert();
            return new xPageContent('Entry created', 'Entry created, <a href="?p=entry//' . $entry->id . '">view it</a>');
        } else {
            foreach ($ret->errors as $error) {
                xanth_log(LOG_LEVEL_USER_MESSAGE, $error);
            }
        }
    }
    return new xPageContent('Create entry', $form->render());
}
 /**
  *
  */
 function check_current_user_access($access_rule)
 {
     if (xanth_conf_get('debug', FALSE)) {
         if (!xAccessRule::exists($access_rule)) {
             xanth_log(LOG_LEVEL_DEBUG, 'Access rule "' . $access_rule . '" does not exists', 'User');
         }
     }
     $userid = xUser::get_current_userid();
     if ($userid !== NULL) {
         //if user has admin role bypass check
         $result = xanth_db_query("SELECT * FROM  user_to_role WHERE userid = %d AND roleName = '%s'", $userid, 'administrator');
         if ($row = xanth_db_fetch_array($result)) {
             return TRUE;
         }
         //select other roles
         $result = xanth_db_query("SELECT role_access_rule.access_rule FROM user_to_role,role_access_rule WHERE \r\n\t\t\t\tuser_to_role.userid = %d AND (role_access_rule.roleName = user_to_role.roleName OR role_access_rule.roleName = '%s') \r\n\t\t\t\tAND\trole_access_rule.access_rule = '%s'", $userid, 'authenticated', $access_rule);
     } else {
         $result = xanth_db_query("SELECT role_access_rule.access_rule FROM role_access_rule WHERE \r\n\t\t\t\trole_access_rule.roleName = '%s' AND role_access_rule.access_rule = '%s'", 'anonymous', $access_rule);
     }
     if ($row = xanth_db_fetch_array($result)) {
         return TRUE;
     }
     return FALSE;
 }