Page MenuHomeIn-Portal Phabricator

in-portal
No OneTemporary

File Metadata

Created
Wed, Oct 1, 9:13 PM

in-portal

Index: branches/RC/kernel/units/sections/sections_config.php
===================================================================
--- branches/RC/kernel/units/sections/sections_config.php (revision 10717)
+++ branches/RC/kernel/units/sections/sections_config.php (revision 10718)
@@ -1,342 +1,332 @@
<?php
$config = Array (
'Prefix' => 'inportal-sections',
'EventHandlerClass' => Array ('class' => 'kEventHandler', 'file' => '', 'build_event' => 'OnBuild'),
'TagProcessorClass' => Array ('class' => 'kDBTagProcessor', 'file' => '', 'build_event' => 'OnBuild'),
// 'SectionPrefix' => 'u',
'Sections' => Array (
'in-portal:root' => Array (
'parent' => null,
'icon' => 'in-portal:site',
'label' => $this->Application->ConfigValue('Site_Name'),
'url' => Array ('t' => 'sections_list', 'pass' => 'm', 'pass_section' => true, 'no_amp' => 1),
'permissions' => Array ('advanced:admin_login', 'advanced:front_login'),
'priority' => 0,
'type' => stTREE,
'SectionPrefix' => 'adm',
),
'in-portal:site' => Array (
'parent' => 'in-portal:root',
'icon' => 'in-portal:struct',
'label' => 'la_tab_Site_Structure',
'url' => Array ('t' => 'sections_list', 'pass_section' => true, 'pass' => 'm'),
'permissions' => Array ('view'),
'priority' => 1,
'type' => stTREE,
'SectionPrefix' => 'c',
),
'in-portal:browse' => Array (
'parent' => 'in-portal:site',
'icon' => 'in-portal:catalog',
'label' => 'la_tab_Browse',
'url' => Array ('t' => 'in-portal/catalog', 'pass' => 'm'),
'late_load' => Array ('t' => 'in-portal/xml/tree_categories', 'pass' => 'm', 'm_cat_id' => 0),
'onclick' => 'checkCatalog(0)',
'permissions' => Array ('view'),
'priority' => 1,
'type' => stTREE,
),
'in-portal:advanced_view' => Array (
'parent' => 'in-portal:site',
'icon' => 'in-portal:advanced_view',
'label' => 'la_tab_AdvancedView',
'url' => Array ('t' => 'in-portal/advanced_view', 'pass' => 'm'),
'permissions' => Array ('view'),
'priority' => 2,
'type' => stTREE,
),
'in-portal:reviews' => Array (
'parent' => 'in-portal:site',
'icon' => 'in-portal:reviews',
'label' => 'la_tab_Reviews',
'url' => Array ('t' => 'in-portal/reviews', 'pass' => 'm'),
'permissions' => Array ('view'),
'priority' => 3,
'type' => stTREE,
),
'in-portal:configure_categories' => Array (
'parent' => 'in-portal:site',
'icon' => 'in-portal:cat_settings',
'label' => 'la_tab_Settings',
'url' => Array ('t' => 'config/config_universal', 'pass_section' => true, 'pass' => 'm'),
'permissions' => Array ('view', 'edit'),
'priority' => 4,
'type' => stTREE,
),
'in-portal:configuration_search' => Array (
'parent' => 'in-portal:site',
'icon' => 'in-portal:settings_search',
'label' => 'la_tab_ConfigSearch',
'url' => Array ('t' => 'in-portal/config/config_search', 'module_key' => 'category', 'pass_section' => true, 'pass' => 'm'),
'permissions' => Array ('view', 'edit'),
'priority' => 5,
'type' => stTREE,
),
'in-portal:configuration_email' => Array (
'parent' => 'in-portal:site',
'icon' => 'in-portal:settings_email',
'label' => 'la_tab_ConfigE-mail',
'url' => Array ('t' => 'in-portal/config/config_email', 'module' => 'In-Portal:Category', 'pass_section' => true, 'pass' => 'm'),
'permissions' => Array ('view', 'edit'),
'priority' => 6,
'type' => stTREE,
),
'in-portal:configuration_custom' => Array (
'parent' => 'in-portal:site',
'icon' => 'in-portal:settings_custom',
'label' => 'la_tab_ConfigCustom',
'url' => Array ('t' => 'custom_fields/custom_fields_list', 'cf_type' => 1, 'pass_section' => true, 'pass' => 'm,cf'),
'permissions' => Array ('view', 'add', 'edit', 'delete'),
'priority' => 7,
'type' => stTREE,
),
'in-portal:users' => Array (
'parent' => 'in-portal:root',
'icon' => 'in-portal:community',
'label' => 'la_tab_Community',
'url' => Array ('t' => 'sections_list', 'pass_section' => true, 'pass' => 'm'),
'permissions' => Array ('view'),
'priority' => 2,
'type' => stTREE,
'SectionPrefix' => 'u',
),
'in-portal:user_list' => Array (
'parent' => 'in-portal:users',
'icon' => 'in-portal:users',
'label' => 'la_tab_User_List',
'url' => Array ('t' => 'in-portal/users/users_list', 'pass' => 'm'),
'permissions' => Array ('view', 'add', 'edit', 'delete', 'advanced:ban', 'advanced:send_email', /*'advanced:add_favorite', 'advanced:remove_favorite',*/),
'priority' => 1,
'type' => stTREE,
),
'in-portal:user_groups' => Array (
'parent' => 'in-portal:users',
'icon' => 'in-portal:usergroups',
'label' => 'la_tab_User_Groups',
'url' => Array ('t' => 'in-portal/groups/groups_list', 'pass' => 'm'),
'permissions' => Array ('view', 'add', 'edit', 'delete', 'advanced:send_email', 'advanced:manage_permissions'),
'priority' => 2,
'type' => stTREE,
),
'in-portal:configure_users' => Array (
'parent' => 'in-portal:users',
'icon' => 'in-portal:users_settings',
'label' => 'la_tab_ConfigSettings',
'url' => Array ('t' => 'config/config_universal', 'module' => 'In-Portal:Users', 'pass_section' => true, 'pass' => 'm'),
'permissions' => Array ('view', 'edit'),
'priority' => 3,
'type' => stTREE,
),
'in-portal:user_email' => Array (
'parent' => 'in-portal:users',
'icon' => 'in-portal:settings_email',
'label' => 'la_tab_ConfigE-mail',
'url' => Array ('t' => 'config/config_email', 'module' => 'In-Portal:Users', 'pass_section' => true, 'pass' => 'm'),
'permissions' => Array ('view', 'edit'),
'priority' => 4,
'type' => stTREE,
),
'in-portal:user_custom' => Array (
'parent' => 'in-portal:users',
'icon' => 'in-portal:settings_custom',
'label' => 'la_tab_ConfigCustom',
'url' => Array ('t' => 'custom_fields/custom_fields_list', 'cf_type' => 6, 'pass_section' => true, 'pass' => 'm,cf'),
'permissions' => Array ('view', 'add', 'edit', 'delete'),
'priority' => 5,
'type' => stTREE,
),
'in-portal:user_banlist' => Array (
'parent' => 'in-portal:users',
'icon' => 'in-portal:banlist',
'label' => 'la_tab_BanList',
'url' => Array ('index_file' => 'config/edit_banlist.php', 'DataType' => 6, 'pass_section' => true, 'pass' => 'm'),
'permissions' => Array ('view', 'add', 'edit', 'delete'),
'priority' => 6,
'type' => stTREE,
),
// "Help" section
'in-portal:help' => Array (
'parent' => 'in-portal:root',
'icon' => 'in-portal:help',
'label' => 'la_tab_Help',
'url' => Array ('index_file' => 'help/manual.pdf', 'pass' => 'm'),
'permissions' => Array ('view'),
'priority' => 7,
'type' => stTREE,
),
// "Summary & Logs" section
'in-portal:reports' => Array (
'parent' => 'in-portal:root',
'icon' => 'in-portal:summary_logs',
'label' => 'la_tab_Reports',
'url' => Array ('t' => 'sections_list', 'pass_section' => true, 'pass' => 'm'),
'permissions' => Array ('view'),
'priority' => 4,
'type' => stTREE,
'SectionPrefix' => 'adm',
),
'in-portal:log_summary' => Array (
'parent' => 'in-portal:reports',
'icon' => 'in-portal:summary',
'label' => 'la_tab_Summary',
'url' => Array ('index_file' => 'logs/summary.php', 'pass' => 'm'),
'permissions' => Array ('view'),
'priority' => 1,
'type' => stTREE,
),
'in-portal:searchlog' => Array (
'parent' => 'in-portal:reports',
'icon' => 'in-portal:search_log',
'label' => 'la_tab_SearchLog',
'url' => Array ('index_file' => 'logs/searchlog.php', 'pass' => 'm'),
'permissions' => Array ('view', 'delete'),
'priority' => 2,
'type' => stTREE,
),
'in-portal:sessionlog' => Array (
'parent' => 'in-portal:reports',
'icon' => 'in-portal:sessions_log',
'label' => 'la_tab_SessionLog',
'url' => Array ('index_file' => 'logs/session_list.php', 'pass' => 'm'),
'permissions' => Array ('view', 'delete'),
'priority' => 3,
'type' => stTREE,
),
'in-portal:emaillog' => Array (
'parent' => 'in-portal:reports',
'icon' => 'in-portal:email_log',
'label' => 'la_tab_EmailLog',
'url' => Array ('index_file' => 'logs/email_log.php', 'pass' => 'm'),
'permissions' => Array ('view', 'delete'),
'priority' => 4,
'type' => stTREE,
),
'in-portal:visits' => Array (
'parent' => 'in-portal:reports',
'icon' => 'in-portal:visits',
'label' => 'la_tab_Visits',
'url' => Array ('t' => 'in-portal/visits/visits_list', 'pass' => 'm'),
'permissions' => Array ('view', 'delete'),
'priority' => 5,
'type' => stTREE,
),
// "Configuration" section
'in-portal:system' => Array (
'parent' => 'in-portal:root',
'icon' => 'in-portal:conf',
'label' => 'la_tab_Sys_Config',
'url' => Array ('t' => 'sections_list', 'pass_section' => true, 'pass' => 'm'),
'permissions' => Array ('view'),
'priority' => 5,
'type' => stTREE,
'SectionPrefix' => 'adm',
),
'in-portal:configure_general' => Array (
'parent' => 'in-portal:system',
'icon' => 'in-portal:conf_general',
'label' => 'la_tab_General',
'url' => Array ('t' => 'config/config_universal', 'pass_section' => true, 'module' => 'In-Portal', 'pass' => 'm'),
'permissions' => Array ('view', 'edit'),
'priority' => 1,
'type' => stTREE,
),
'in-portal:configure_themes' => Array (
'parent' => 'in-portal:system',
'icon' => 'in-portal:conf_themes',
'label' => 'la_tab_Themes',
'url' => Array ('index_file' => 'config/config_theme.php', 'pass' => 'm'),
'permissions' => Array ('view', 'add', 'edit', 'delete'),
'priority' => 3,
'type' => stTREE,
),
// "Tools" section
'in-portal:tools' => Array (
'parent' => 'in-portal:root',
'icon' => 'in-portal:tools',
'label' => 'la_tab_Tools',
'url' => Array ('t' => 'sections_list', 'pass_section' => true, 'pass' => 'm'),
'permissions' => Array ('view'),
'priority' => 6,
'type' => stTREE,
'SectionPrefix' => 'adm',
),
- 'in-portal:backup' => Array (
- 'parent' => 'in-portal:tools',
- 'icon' => 'in-portal:tool_backup',
- 'label' => 'la_tab_Backup',
- 'url' => Array ('index_file' => 'backup/backup1.php', 'pass' => 'm'),
- 'permissions' => Array ('view'),
- 'priority' => 2,
- 'type' => stTREE,
- ),
-
'in-portal:restore' => Array (
'parent' => 'in-portal:tools',
'icon' => 'in-portal:tool_restore',
'label' => 'la_tab_Restore',
'url' => Array ('index_file' => 'backup/restore1.php', 'pass' => 'm'),
'permissions' => Array ('view'),
'priority' => 3,
'type' => stTREE,
),
'in-portal:main_import' => Array (
'parent' => 'in-portal:tools',
'icon' => 'in-portal:tool_import',
'label' => 'la_tab_ImportData',
'url' => Array ('index_file' => 'import/step1.php', 'pass' => 'm'),
'permissions' => Array ('view'),
'priority' => 4,
'type' => stTREE,
),
'in-portal:sql_query' => Array (
'parent' => 'in-portal:tools',
'icon' => 'in-portal:tool_import',
'label' => 'la_tab_QueryDB',
'url' => Array ('index_file' => 'tools/sql_query.php', 'pass' => 'm'),
'permissions' => Array ('view', 'edit'),
'priority' => 5,
'type' => stTREE,
),
'in-portal:server_info' => Array (
'parent' => 'in-portal:tools',
'icon' => 'in-portal:server_info',
'label' => 'la_tab_ServerInfo',
'url' => Array ('index_file' => 'tools/server_info.php', 'pass' => 'm'),
'permissions' => Array ('view'),
'priority' => 6,
'type' => stTREE,
),
),
);
\ No newline at end of file
Property changes on: branches/RC/kernel/units/sections/sections_config.php
___________________________________________________________________
Modified: cvs2svn:cvs-rev
## -1 +1 ##
-1.5.2.2
\ No newline at end of property
+1.5.2.3
\ No newline at end of property
Index: branches/RC/core/units/sections/sections_config.php
===================================================================
--- branches/RC/core/units/sections/sections_config.php (revision 10717)
+++ branches/RC/core/units/sections/sections_config.php (revision 10718)
@@ -1,342 +1,332 @@
<?php
$config = Array (
'Prefix' => 'inportal-sections',
'EventHandlerClass' => Array ('class' => 'kEventHandler', 'file' => '', 'build_event' => 'OnBuild'),
'TagProcessorClass' => Array ('class' => 'kDBTagProcessor', 'file' => '', 'build_event' => 'OnBuild'),
// 'SectionPrefix' => 'u',
'Sections' => Array (
'in-portal:root' => Array (
'parent' => null,
'icon' => 'in-portal:site',
'label' => $this->Application->ConfigValue('Site_Name'),
'url' => Array ('t' => 'sections_list', 'pass' => 'm', 'pass_section' => true, 'no_amp' => 1),
'permissions' => Array ('advanced:admin_login', 'advanced:front_login'),
'priority' => 0,
'type' => stTREE,
'SectionPrefix' => 'adm',
),
'in-portal:site' => Array (
'parent' => 'in-portal:root',
'icon' => 'in-portal:struct',
'label' => 'la_tab_Site_Structure',
'url' => Array ('t' => 'sections_list', 'pass_section' => true, 'pass' => 'm'),
'permissions' => Array ('view'),
'priority' => 1,
'type' => stTREE,
'SectionPrefix' => 'c',
),
'in-portal:browse' => Array (
'parent' => 'in-portal:site',
'icon' => 'in-portal:catalog',
'label' => 'la_tab_Browse',
'url' => Array ('t' => 'in-portal/catalog', 'pass' => 'm'),
'late_load' => Array ('t' => 'in-portal/xml/tree_categories', 'pass' => 'm', 'm_cat_id' => 0),
'onclick' => 'checkCatalog(0)',
'permissions' => Array ('view'),
'priority' => 1,
'type' => stTREE,
),
'in-portal:advanced_view' => Array (
'parent' => 'in-portal:site',
'icon' => 'in-portal:advanced_view',
'label' => 'la_tab_AdvancedView',
'url' => Array ('t' => 'in-portal/advanced_view', 'pass' => 'm'),
'permissions' => Array ('view'),
'priority' => 2,
'type' => stTREE,
),
'in-portal:reviews' => Array (
'parent' => 'in-portal:site',
'icon' => 'in-portal:reviews',
'label' => 'la_tab_Reviews',
'url' => Array ('t' => 'in-portal/reviews', 'pass' => 'm'),
'permissions' => Array ('view'),
'priority' => 3,
'type' => stTREE,
),
'in-portal:configure_categories' => Array (
'parent' => 'in-portal:site',
'icon' => 'in-portal:cat_settings',
'label' => 'la_tab_Settings',
'url' => Array ('t' => 'config/config_universal', 'pass_section' => true, 'pass' => 'm'),
'permissions' => Array ('view', 'edit'),
'priority' => 4,
'type' => stTREE,
),
'in-portal:configuration_search' => Array (
'parent' => 'in-portal:site',
'icon' => 'in-portal:settings_search',
'label' => 'la_tab_ConfigSearch',
'url' => Array ('t' => 'in-portal/config/config_search', 'module_key' => 'category', 'pass_section' => true, 'pass' => 'm'),
'permissions' => Array ('view', 'edit'),
'priority' => 5,
'type' => stTREE,
),
'in-portal:configuration_email' => Array (
'parent' => 'in-portal:site',
'icon' => 'in-portal:settings_email',
'label' => 'la_tab_ConfigE-mail',
'url' => Array ('t' => 'in-portal/config/config_email', 'module' => 'In-Portal:Category', 'pass_section' => true, 'pass' => 'm'),
'permissions' => Array ('view', 'edit'),
'priority' => 6,
'type' => stTREE,
),
'in-portal:configuration_custom' => Array (
'parent' => 'in-portal:site',
'icon' => 'in-portal:settings_custom',
'label' => 'la_tab_ConfigCustom',
'url' => Array ('t' => 'custom_fields/custom_fields_list', 'cf_type' => 1, 'pass_section' => true, 'pass' => 'm,cf'),
'permissions' => Array ('view', 'add', 'edit', 'delete'),
'priority' => 7,
'type' => stTREE,
),
'in-portal:users' => Array (
'parent' => 'in-portal:root',
'icon' => 'in-portal:community',
'label' => 'la_tab_Community',
'url' => Array ('t' => 'sections_list', 'pass_section' => true, 'pass' => 'm'),
'permissions' => Array ('view'),
'priority' => 2,
'type' => stTREE,
'SectionPrefix' => 'u',
),
'in-portal:user_list' => Array (
'parent' => 'in-portal:users',
'icon' => 'in-portal:users',
'label' => 'la_tab_User_List',
'url' => Array ('t' => 'in-portal/users/users_list', 'pass' => 'm'),
'permissions' => Array ('view', 'add', 'edit', 'delete', 'advanced:ban', 'advanced:send_email', /*'advanced:add_favorite', 'advanced:remove_favorite',*/),
'priority' => 1,
'type' => stTREE,
),
'in-portal:user_groups' => Array (
'parent' => 'in-portal:users',
'icon' => 'in-portal:usergroups',
'label' => 'la_tab_User_Groups',
'url' => Array ('t' => 'in-portal/groups/groups_list', 'pass' => 'm'),
'permissions' => Array ('view', 'add', 'edit', 'delete', 'advanced:send_email', 'advanced:manage_permissions'),
'priority' => 2,
'type' => stTREE,
),
'in-portal:configure_users' => Array (
'parent' => 'in-portal:users',
'icon' => 'in-portal:users_settings',
'label' => 'la_tab_ConfigSettings',
'url' => Array ('t' => 'config/config_universal', 'module' => 'In-Portal:Users', 'pass_section' => true, 'pass' => 'm'),
'permissions' => Array ('view', 'edit'),
'priority' => 3,
'type' => stTREE,
),
'in-portal:user_email' => Array (
'parent' => 'in-portal:users',
'icon' => 'in-portal:settings_email',
'label' => 'la_tab_ConfigE-mail',
'url' => Array ('t' => 'config/config_email', 'module' => 'In-Portal:Users', 'pass_section' => true, 'pass' => 'm'),
'permissions' => Array ('view', 'edit'),
'priority' => 4,
'type' => stTREE,
),
'in-portal:user_custom' => Array (
'parent' => 'in-portal:users',
'icon' => 'in-portal:settings_custom',
'label' => 'la_tab_ConfigCustom',
'url' => Array ('t' => 'custom_fields/custom_fields_list', 'cf_type' => 6, 'pass_section' => true, 'pass' => 'm,cf'),
'permissions' => Array ('view', 'add', 'edit', 'delete'),
'priority' => 5,
'type' => stTREE,
),
'in-portal:user_banlist' => Array (
'parent' => 'in-portal:users',
'icon' => 'in-portal:banlist',
'label' => 'la_tab_BanList',
'url' => Array ('index_file' => 'config/edit_banlist.php', 'DataType' => 6, 'pass_section' => true, 'pass' => 'm'),
'permissions' => Array ('view', 'add', 'edit', 'delete'),
'priority' => 6,
'type' => stTREE,
),
// "Help" section
'in-portal:help' => Array (
'parent' => 'in-portal:root',
'icon' => 'in-portal:help',
'label' => 'la_tab_Help',
'url' => Array ('index_file' => 'help/manual.pdf', 'pass' => 'm'),
'permissions' => Array ('view'),
'priority' => 7,
'type' => stTREE,
),
// "Summary & Logs" section
'in-portal:reports' => Array (
'parent' => 'in-portal:root',
'icon' => 'in-portal:summary_logs',
'label' => 'la_tab_Reports',
'url' => Array ('t' => 'sections_list', 'pass_section' => true, 'pass' => 'm'),
'permissions' => Array ('view'),
'priority' => 4,
'type' => stTREE,
'SectionPrefix' => 'adm',
),
'in-portal:log_summary' => Array (
'parent' => 'in-portal:reports',
'icon' => 'in-portal:summary',
'label' => 'la_tab_Summary',
'url' => Array ('index_file' => 'logs/summary.php', 'pass' => 'm'),
'permissions' => Array ('view'),
'priority' => 1,
'type' => stTREE,
),
'in-portal:searchlog' => Array (
'parent' => 'in-portal:reports',
'icon' => 'in-portal:search_log',
'label' => 'la_tab_SearchLog',
'url' => Array ('index_file' => 'logs/searchlog.php', 'pass' => 'm'),
'permissions' => Array ('view', 'delete'),
'priority' => 2,
'type' => stTREE,
),
'in-portal:sessionlog' => Array (
'parent' => 'in-portal:reports',
'icon' => 'in-portal:sessions_log',
'label' => 'la_tab_SessionLog',
'url' => Array ('index_file' => 'logs/session_list.php', 'pass' => 'm'),
'permissions' => Array ('view', 'delete'),
'priority' => 3,
'type' => stTREE,
),
'in-portal:emaillog' => Array (
'parent' => 'in-portal:reports',
'icon' => 'in-portal:email_log',
'label' => 'la_tab_EmailLog',
'url' => Array ('index_file' => 'logs/email_log.php', 'pass' => 'm'),
'permissions' => Array ('view', 'delete'),
'priority' => 4,
'type' => stTREE,
),
'in-portal:visits' => Array (
'parent' => 'in-portal:reports',
'icon' => 'in-portal:visits',
'label' => 'la_tab_Visits',
'url' => Array ('t' => 'in-portal/visits/visits_list', 'pass' => 'm'),
'permissions' => Array ('view', 'delete'),
'priority' => 5,
'type' => stTREE,
),
// "Configuration" section
'in-portal:system' => Array (
'parent' => 'in-portal:root',
'icon' => 'in-portal:conf',
'label' => 'la_tab_Sys_Config',
'url' => Array ('t' => 'sections_list', 'pass_section' => true, 'pass' => 'm'),
'permissions' => Array ('view'),
'priority' => 5,
'type' => stTREE,
'SectionPrefix' => 'adm',
),
'in-portal:configure_general' => Array (
'parent' => 'in-portal:system',
'icon' => 'in-portal:conf_general',
'label' => 'la_tab_General',
'url' => Array ('t' => 'config/config_universal', 'pass_section' => true, 'module' => 'In-Portal', 'pass' => 'm'),
'permissions' => Array ('view', 'edit'),
'priority' => 1,
'type' => stTREE,
),
'in-portal:configure_themes' => Array (
'parent' => 'in-portal:system',
'icon' => 'in-portal:conf_themes',
'label' => 'la_tab_Themes',
'url' => Array ('index_file' => 'config/config_theme.php', 'pass' => 'm'),
'permissions' => Array ('view', 'add', 'edit', 'delete'),
'priority' => 3,
'type' => stTREE,
),
// "Tools" section
'in-portal:tools' => Array (
'parent' => 'in-portal:root',
'icon' => 'in-portal:tools',
'label' => 'la_tab_Tools',
'url' => Array ('t' => 'sections_list', 'pass_section' => true, 'pass' => 'm'),
'permissions' => Array ('view'),
'priority' => 6,
'type' => stTREE,
'SectionPrefix' => 'adm',
),
- 'in-portal:backup' => Array (
- 'parent' => 'in-portal:tools',
- 'icon' => 'in-portal:tool_backup',
- 'label' => 'la_tab_Backup',
- 'url' => Array ('index_file' => 'backup/backup1.php', 'pass' => 'm'),
- 'permissions' => Array ('view'),
- 'priority' => 2,
- 'type' => stTREE,
- ),
-
'in-portal:restore' => Array (
'parent' => 'in-portal:tools',
'icon' => 'in-portal:tool_restore',
'label' => 'la_tab_Restore',
'url' => Array ('index_file' => 'backup/restore1.php', 'pass' => 'm'),
'permissions' => Array ('view'),
'priority' => 3,
'type' => stTREE,
),
'in-portal:main_import' => Array (
'parent' => 'in-portal:tools',
'icon' => 'in-portal:tool_import',
'label' => 'la_tab_ImportData',
'url' => Array ('index_file' => 'import/step1.php', 'pass' => 'm'),
'permissions' => Array ('view'),
'priority' => 4,
'type' => stTREE,
),
'in-portal:sql_query' => Array (
'parent' => 'in-portal:tools',
'icon' => 'in-portal:tool_import',
'label' => 'la_tab_QueryDB',
'url' => Array ('index_file' => 'tools/sql_query.php', 'pass' => 'm'),
'permissions' => Array ('view', 'edit'),
'priority' => 5,
'type' => stTREE,
),
'in-portal:server_info' => Array (
'parent' => 'in-portal:tools',
'icon' => 'in-portal:server_info',
'label' => 'la_tab_ServerInfo',
'url' => Array ('index_file' => 'tools/server_info.php', 'pass' => 'm'),
'permissions' => Array ('view'),
'priority' => 6,
'type' => stTREE,
),
),
);
\ No newline at end of file
Property changes on: branches/RC/core/units/sections/sections_config.php
___________________________________________________________________
Modified: cvs2svn:cvs-rev
## -1 +1 ##
-1.5.2.2
\ No newline at end of property
+1.5.2.3
\ No newline at end of property
Index: branches/RC/core/units/configuration/configuration_tag_processor.php
===================================================================
--- branches/RC/core/units/configuration/configuration_tag_processor.php (revision 10717)
+++ branches/RC/core/units/configuration/configuration_tag_processor.php (revision 10718)
@@ -1,208 +1,214 @@
<?php
class ConfigurationTagProcessor extends kDBTagProcessor {
function Init($prefix,$special,$event_params=null)
{
parent::Init($prefix, $special, $event_params);
$this->Application->LinkVar('module_key');
}
/**
* Prints list content using block specified
*
* @param Array $params
* @return string
* @access public
*/
function PrintList($params)
{
$list =& $this->GetList($params);
$id_field = $this->Application->getUnitOption($this->Prefix,'IDField');
$list->Query();
$o = '';
$list->GoFirst();
$block_params=$this->prepareTagParams($params);
// $block_params['name'] = $this->SelectParam($params, 'render_as,block');
$block_params['pass_params'] = 'true';
$block_params['IdField'] = $list->IDField;
$prev_heading = '';
$next_block = $params['full_block'];
$this->groupRecords($list->Records, 'heading');
$field_values = $this->Application->GetVar($this->getPrefixSpecial(true));
while (!$list->EOL())
{
$this->Application->SetVar( $this->getPrefixSpecial().'_id', $list->GetDBField($id_field) ); // for edit/delete links using GET
// using 2 blocks for drawing o row in case if current & next record titles match
$next_item_prompt = $list->CurrentIndex + 1 < $list->RecordsCount ? $list->Records[$list->CurrentIndex + 1]['prompt'] : '';
$this_item_prompt = $list->GetDBField('prompt');
if ($next_item_prompt == $this_item_prompt) {
$curr_block = $params['half_block1'];
$next_block = $params['half_block2'];
} else {
$curr_block = $next_block;
$next_block = $params['full_block'];
}
$block_params['name'] = $curr_block;
$block_params['show_heading'] = ($prev_heading != $list->GetDBField('heading') ) ? 1 : 0;
// set values from submit if any
if ($field_values) {
$list->SetDBField('VariableValue', $field_values[$list->GetDBField('VariableName')]['VariableValue']);
}
$list->SetDBField('DirectOptions', '');
$o.= $this->Application->ParseBlock($block_params, 1);
$prev_heading = $list->GetDBField('heading');
$list->GoNext();
}
$this->Application->RemoveVar('ModuleRootCategory');
$this->Application->SetVar( $this->getPrefixSpecial().'_id', '');
return $o;
}
function getModuleItemName()
{
$module = $this->Application->GetVar('module');
$table = $this->Application->getUnitOption('confs', 'TableName');
$sql = 'SELECT ConfigHeader
FROM '.$table.'
WHERE ModuleName = '.$this->Conn->qstr($module);
return $this->Conn->GetOne($sql);
}
function PrintConfList($params)
{
$list =& $this->GetList($params);
$id_field = $this->Application->getUnitOption($this->Prefix, 'IDField');
$list->PerPage = -1;
$list->Query();
$o = '';
$list->GoFirst();
$tmp_row = Array();
while (!$list->EOL()) {
$rec = $list->getCurrentRecord();
$tmp_row[0][$rec['VariableName']] = $rec['VariableValue'];
$tmp_row[0][$rec['VariableName'].'_prompt'] = $rec['prompt'];
$list->GoNext();
}
$list->Records = $tmp_row;
$block_params = $this->prepareTagParams($params);
$block_params['name'] = $this->SelectParam($params, 'render_as,block');
$block_params['module_key'] = $this->Application->GetVar('module_key');
$block_params['module_item'] = $this->getModuleItemName();
$list->GoFirst();
return $this->Application->ParseBlock($block_params, 1);
}
function ShowRelevance($params)
{
return $this->Application->GetVar('module_key') != '_';
}
function ConfigValue($params)
{
return $this->Application->ConfigValue($params['name']);
}
function Error($params)
{
$object =& $this->Application->recallObject( $this->getPrefixSpecial() );
$field = $object->GetDBField($params['id_field']);
$errors = $this->Application->GetVar('errormsgs');
$errors = $errors[$this->getPrefixSpecial()];
if (isset($errors[$field])) {
$msg = $this->Application->Phrase($errors[$field]);
}
else {
$msg = '';
}
return $msg;
}
/**
* Allows to show category path of selected module
*
* @param Array $params
* @return string
*/
function CategoryPath($params)
{
if (!isset($params['cat_id'])) {
$params['cat_id'] = $this->ModuleRootCategory( Array() );
}
return $this->Application->ProcessParsedTag('c', 'CategoryPath', $params);
}
/**
* Shows edit warning in case if module root category changed but not saved
*
* @param Array $params
* @return string
*/
function SaveWarning($params)
{
$temp_category_id = $this->Application->RecallVar('ModuleRootCategory');
if ($temp_category_id !== false) {
return $this->Application->ParseBlock($params);
}
return '';
}
function ModuleRootCategory($params)
{
$category_id = $this->Application->RecallVar('ModuleRootCategory');
if ($category_id === false) {
$category_id = $this->Application->findModule('Name', $this->Application->GetVar('module'), 'RootCat');
}
return $category_id;
}
/**
* Returns variable ID by it's name (used on search relevance configuration screen)
*
* @param Array $params
* @return int
*/
function GetVariableID($params)
{
static $cached_ids = Array ();
$var_name = $params['name'];
if (!isset($cached_ids[$var_name])) {
$id_field = $this->Application->getUnitOption($this->Prefix, 'IDField');
$table_name = $this->Application->getUnitOption($this->Prefix, 'TableName');
$sql = 'SELECT '.$id_field.'
FROM '.$table_name.'
WHERE VariableName = '.$this->Conn->qstr($params['name']);
$cached_ids[$var_name] = $this->Conn->GetOne($sql);
}
return $cached_ids[$var_name];
}
+
+ function IsWritablePath($params)
+ {
+ return is_writable($this->ConfigValue($params));
+ }
+
}
?>
\ No newline at end of file
Property changes on: branches/RC/core/units/configuration/configuration_tag_processor.php
___________________________________________________________________
Modified: cvs2svn:cvs-rev
## -1 +1 ##
-1.16
\ No newline at end of property
+1.16.2.1
\ No newline at end of property
Index: branches/RC/core/units/configuration/configuration_event_handler.php
===================================================================
--- branches/RC/core/units/configuration/configuration_event_handler.php (revision 10717)
+++ branches/RC/core/units/configuration/configuration_event_handler.php (revision 10718)
@@ -1,192 +1,192 @@
<?php
class ConfigurationEventHandler extends kDBEventHandler {
/**
* Changes permission section to one from REQUEST, not from config
*
* @param kEvent $event
*/
function CheckPermission(&$event)
{
$event->setEventParam('PermSection', $this->Application->GetVar('section'));
return parent::CheckPermission($event);
}
/**
* Apply any custom changes to list's sql query
*
* @param kEvent $event
* @access protected
* @see OnListBuild
*/
function SetCustomQuery(&$event)
{
$object =& $event->getObject();
$module = $this->Application->GetVar('module');
$section = $this->Application->GetVar('section');
$object->addFilter('module_filter', '%1$s.ModuleOwner = '.$this->Conn->qstr($module));
$object->addFilter('section_filter', '%1$s.Section = '.$this->Conn->qstr($section));
}
/**
* Enter description here...
*
* @param kEvent $event
*/
function OnBeforeItemUpdate(&$event)
{
$object =& $event->getObject();
// if password field is empty, then don't update
if ($object->GetDBField('element_type') == 'password') {
if (trim($object->GetDBField('VariableValue')) == '') {
$field_options = $object->GetFieldOptions('VariableValue');
$field_options['skip_empty'] = 1;
$object->SetFieldOptions('VariableValue', $field_options);
}else {
$password_formatter =& $this->Application->recallObject('kPasswordFormatter');
$object->SetDBField('VariableValue', $password_formatter->EncryptPassword($object->GetDBField('VariableValue'), 'b38'));
}
}
$field_values = $this->Application->GetVar($event->getPrefixSpecial(true));
$state_country_hash = Array(
'Comm_State' => 'Comm_Country',
'Comm_Shipping_State' => 'Comm_Shipping_Country'
);
$field_name = $object->GetDBField('VariableName');
if (isset($state_country_hash[$field_name])) {
// if this is state field
$check_state = $object->GetDBField('VariableValue');
$check_country = $field_values[ $state_country_hash[$field_name] ]['VariableValue'];
if (!($check_country && $check_state)) {
return true;
}
$cs_helper =& $this->Application->recallObject('CountryStatesHelper');
$state_iso = $cs_helper->CheckState($check_state, $check_country);
if ($state_iso !== false) {
$object->SetDBField('VariableValue', $state_iso);
}
else
{
$errormsgs = $this->Application->GetVar('errormsgs');
$errors = !$errormsgs || !isset($errormsgs[$event->Prefix_Special]) ? Array() : $errormsgs[$event->Prefix_Special];
$errors[$field_name] = 'la_InvalidState';
$errormsgs[$event->Prefix_Special] = $errors;
$this->Application->SetVar('errormsgs', $errormsgs);
$event->status = erFAIL;
}
}
}
/**
* Enter description here...
*
* @param kEvent $event
*/
function OnAfterItemUpdate(&$event)
{
$object =& $event->getObject();
if ($object->GetDBField('element_type') == 'password') {
if (trim($object->GetDBField('VariableValue')) == '') {
$field_options = $object->GetFieldOptions('VariableValue');
unset($field_options['skip_empty']);
$object->SetFieldOptions('VariableValue', $field_options);
}
}
}
/**
* Enter description here...
*
* @param kEvent $event
*/
function OnUpdate(&$event)
{
if (!$this->Application->CheckPermission('SYSTEM_ACCESS.READONLY', 1)) {
// 1. save user selected module root category
$items_info = $this->Application->GetVar($event->getPrefixSpecial(true));
$new_category_id = getArrayValue($items_info, 'ModuleRootCategory', 'VariableValue');
if ($new_category_id !== false) {
unset($items_info['ModuleRootCategory']);
$this->Application->SetVar($event->getPrefixSpecial(true), $items_info);
}
parent::OnUpdate($event);
if ($event->status == erSUCCESS && $new_category_id !== false) {
// root category was submitted
$module = $this->Application->GetVar('module');
$root_category_id = $this->Application->findModule('Name', $module, 'RootCat');
if ($root_category_id != $new_category_id) {
// root category differs from one in db
$fields_hash = Array('RootCat' => $new_category_id);
$this->Conn->doUpdate($fields_hash, TABLE_PREFIX.'Modules', 'Name = '.$this->Conn->qstr($module));
}
}
if ($event->status == erSUCCESS) { // reset cache
$this->Application->UnitConfigReader->ResetParsedData();
}
}
if ($this->Application->GetVar('errormsgs')) {
// because we have list out there, and this is item
$this->Application->removeObject($event->getPrefixSpecial());
$event->redirect = false;
}
}
/**
* Enter description here...
*
* @param kEvent $event
*/
/*function OnChangeCountry(&$event)
{
$event->setPseudoClass('_List');
$object = &$event->getObject( Array('per_page'=>-1) );
$object->Query();
$array_records =& $object->Records;
foreach($array_records as $i=>$record){
if ($record['VariableName']=='Comm_Country'){
$values = $this->Application->GetVar('conf');
$array_records[$i]['VariableValue'] = $values['Comm_Country']['VariableValue'];
}
}
$event->redirect_params = Array('opener' => 's', 'pass'=>'all,conf'); //stay!
$event->redirect = false;
}*/
/**
* Process items from selector (selected_ids var, key - prefix, value - comma separated ids)
*
* @param kEvent $event
*/
function OnProcessSelected(&$event)
{
$selected_ids = $this->Application->GetVar('selected_ids');
$this->Application->StoreVar('ModuleRootCategory', $selected_ids['c']);
$this->finalizePopup($event);
}
-
+
}
?>
\ No newline at end of file
Property changes on: branches/RC/core/units/configuration/configuration_event_handler.php
___________________________________________________________________
Modified: cvs2svn:cvs-rev
## -1 +1 ##
-1.18.2.1
\ No newline at end of property
+1.18.2.2
\ No newline at end of property
Index: branches/RC/core/units/admin/admin_events_handler.php
===================================================================
--- branches/RC/core/units/admin/admin_events_handler.php (revision 10717)
+++ branches/RC/core/units/admin/admin_events_handler.php (revision 10718)
@@ -1,522 +1,763 @@
<?php
class AdminEventsHandler extends kDBEventHandler {
function mapPermissions()
{
parent::mapPermissions();
$permissions = Array(
'OnSaveColumns' => array('self' => true),
'OnClosePopup' => array('self' => true),
'OnSaveSetting' => array('self' => true),
// export/import permissions is checked within events
'OnExportCSV' => Array('self' => true),
'OnGetCSV' => Array('self' => true),
'OnCSVImportBegin' => Array('self' => true),
'OnCSVImportStep' => Array('self' => true),
'OnDropTempTablesByWID' => array('self' => true),
);
$this->permMapping = array_merge($this->permMapping, $permissions);
}
/**
* Checks permissions of user
*
* @param kEvent $event
*/
function CheckPermission(&$event)
{
$system_events = Array (
'OnResetModRwCache', 'OnResetCMSMenuCache', 'OnResetSections',
'OnResetConfigsCache', 'OnCompileTemplates', 'OnGenerateTableStructure',
'OnRebuildThemes', 'OnCheckPrefixConfig',
);
if ($this->Application->isDebugMode(false) && in_array($event->Name, $system_events)) {
return true;
}
return parent::CheckPermission($event);
}
/**
* Enter description here...
*
* @param kEvent $event
*/
function OnResetModRwCache(&$event)
{
if ($this->Application->GetVar('ajax') == 'yes') {
$event->status = erSTOP;
}
$this->Conn->Query('DELETE FROM '.TABLE_PREFIX.'Cache WHERE VarName LIKE "mod_rw%"');
}
function OnResetCMSMenuCache(&$event)
{
if ($this->Application->GetVar('ajax') == 'yes') {
$event->status = erSTOP;
}
$this->Conn->Query('DELETE FROM '.TABLE_PREFIX.'Cache WHERE VarName = "cms_menu"');
}
function OnResetSections(&$event)
{
if ($this->Application->GetVar('ajax') == 'yes') {
$event->status = erSTOP;
}
$this->Conn->Query('DELETE FROM '.TABLE_PREFIX.'Cache WHERE VarName = "sections_parsed"');
if (isset($this->Application->Memcached)) {
$this->Application->Memcached->delete('master:sections_parsed');
}
}
function OnResetConfigsCache(&$event)
{
if ($this->Application->GetVar('ajax') == 'yes') {
$event->status = erSTOP;
}
$this->Conn->Query('DELETE FROM '.TABLE_PREFIX.'Cache WHERE VarName = "config_files" OR VarName = "configs_parsed" OR VarName = "sections_parsed"');
if (isset($this->Application->Memcached)) {
$this->Application->Memcached->delete('master:config_files');
$this->Application->Memcached->delete('master:configs_parsed');
$this->Application->Memcached->delete('master:sections_parsed');
}
}
function OnCompileTemplates(&$event)
{
$compiler =& $this->Application->recallObject('NParserCompiler');
/* @var $compiler NParserCompiler */
$compiler->CompileTemplatesStep();
$event->status = erSTOP;
}
/**
* Generates sturcture for specified table
*
* @param kEvent $event
* @author Alex
*/
function OnGenerateTableStructure(&$event)
{
$types_hash = Array(
'string' => 'varchar|text|mediumtext|longtext|date|datetime|time|timestamp|char|year|enum|set',
'int' => 'smallint|mediumint|int|bigint|tinyint',
'float' => 'float|double|decimal',
);
$table_name = $this->Application->GetVar('table_name');
if (!$table_name) {
echo 'error: no table name specified';
return ;
}
if (TABLE_PREFIX && !preg_match('/^'.preg_quote(TABLE_PREFIX, '/').'(.*)/', $table_name)) {
// table name without prefix, then add it
$table_name = TABLE_PREFIX.$table_name;
}
if (!$this->Conn->TableFound($table_name)) {
// table with prefix doesn't exist, assume that just config prefix passed -> resolve table name from it
$table_name = $this->Application->getUnitOption(substr($table_name, strlen(TABLE_PREFIX)), 'TableName');
}
$table_info = $this->Conn->Query('DESCRIBE '.$table_name);
// 1. prepare config keys
$id_field = '';
$fields = Array();
$float_types = Array ('float', 'double', 'numeric');
foreach ($table_info as $field_info) {
if (preg_match('/l[\d]+_.*/', $field_info['Field'])) {
// don't put multilingual fields in config
continue;
}
$field_options = Array ();
// 1. get php field type by mysql field type
foreach ($types_hash as $php_type => $db_types) {
if (preg_match('/'.$db_types.'/', $field_info['Type'])) {
$field_options['type'] = $php_type;
break;
}
}
$default_value = $field_info['Default'];
if (in_array($php_type, $float_types)) {
// this is float number
if (preg_match('/'.$db_types.'\([\d]+,([\d]+)\)/i', $field_info['Type'], $regs)) {
// size is described in structure -> add formatter
$field_options['formatter'] = 'kFormatter';
$field_options['format'] = '%01.'.$regs[1].'f';
if ($field_info['Null'] != 'YES') {
// null fields, will most likely have NULL as default value
$default_value = 0;
}
}
else {
// no size information, just convert to float
if ($field_info['Null'] != 'YES') {
// null fields, will most likely have NULL as default value
$default_value = (float)$default_value;
}
}
}
if (preg_match('/varchar\(([\d]+)\)/i', $field_info['Type'], $regs)) {
$field_options['max_len'] = (int)$regs[1];
}
if ($field_info['Null'] != 'YES') {
$field_options['not_null'] = 1;
}
if ($field_info['Key'] == 'PRI') {
$default_value = 0;
$id_field = $field_info['Field'];
}
if ($php_type == 'int' && ($field_info['Null'] != 'YES' || is_numeric($default_value))) {
// is integer field AND not null
$field_options['default'] = (int)$default_value;
}
else {
$field_options['default'] = $default_value;
}
$fields[ $field_info['Field'] ] = $this->transformDump($field_options);
}
$ret = stripslashes(var_export($fields, true));
$ret = preg_replace("/'(.*?)' => 'Array \((.*?), \)',/", "'\\1' => Array (\\2),", $ret);
$ret = preg_replace("/\n '/", "\n\t'", $ret);
$ret = "'IDField' => '".$id_field."',\n'Fields' => A".substr($ret, 1).',';
ob_start();
?>
<html>
<head>
<title>Table "<?php echo $table_name; ?>" Structure</title>
</head>
<body bgcolor="#E7E7E7">
<a href="javascript:window.close();">Close Window</a><br />
<?php echo $GLOBALS['debugger']->highlightString($ret); ?>
<br /><a href="javascript:window.close();">Close Window</a><br />
</body>
</html>
<?php
echo ob_get_clean();
$event->status = erSTOP;
}
function transformDump($dump)
{
if (is_array($dump)) {
$dump = var_export($dump, true);
}
$dump = preg_replace("/,\n[ ]*/", ', ', $dump);
$dump = preg_replace("/array \(\n[ ]*/", 'Array (', $dump); // replace array start
$dump = preg_replace("/,\n[ ]*\),/", "),", $dump); // replace array end
return $dump;
}
/**
* Refreshes ThemeFiles & Theme tables by actual content on HDD
*
* @param kEvent $event
*/
function OnRebuildThemes(&$event)
{
if ($this->Application->GetVar('ajax') == 'yes') {
$event->status = erSTOP;
}
$themes_helper =& $this->Application->recallObject('ThemesHelper');
/* @var $themes_helper kThemesHelper */
$themes_helper->refreshThemes();
}
function OnSaveColumns(&$event)
{
$picker_helper =& $this->Application->recallObject('ColumnPickerHelper');
/* @var $picker_helper kColumnPickerHelper */
$picker_helper->SetGridName($this->Application->GetLinkedVar('grid_name'));
$picked = trim($this->Application->GetVar('picked_str'), '|');
$hidden = trim($this->Application->GetVar('hidden_str'), '|');
$main_prefix = $this->Application->GetVar('main_prefix');
$picker_helper->SaveColumns($main_prefix, $picked, $hidden);
$this->finalizePopup($event);
}
/**
* Saves various admin settings via ajax
*
* @param kEvent $event
*/
function OnSaveSetting(&$event)
{
if ($this->Application->GetVar('ajax') != 'yes') {
return ;
}
$var_name = $this->Application->GetVar('var_name');
$var_value = $this->Application->GetVar('var_value');
$this->Application->StorePersistentVar($var_name, $var_value);
$event->status = erSTOP;
}
/**
* Just closes popup & deletes last_template & opener_stack if popup, that is closing
*
* @param kEvent $event
*/
function OnClosePopup(&$event)
{
$event->SetRedirectParam('opener', 'u');
}
/**
* Occurs right after initialization of the kernel, used mainly as hook-to event
*
* @param kEvent $event
*/
function OnStartup(&$event)
{
}
/**
* Occurs right before echoing the output, in Done method of application, used mainly as hook-to event
*
* @param kEvent $event
*/
function OnBeforeShutdown(&$event)
{
}
/**
* Is called after tree was build (when not from cache)
*
* @param kEvent $event
*/
function OnAfterBuildTree(&$event)
{
}
/**
* Called by AJAX to perform CSV export
*
* @param kEvent $event
*/
function OnExportCSV(&$event)
{
$export_helper =& $this->Application->recallObject('CSVHelper');
/* @var $export_helper kCSVHelper */
$prefix_special = $this->Application->GetVar('PrefixSpecial');
if(!$prefix_special) {
$prefix_special = $export_helper->ExportData('prefix');
}
$prefix_elems = split('\.|_', $prefix_special, 2);
$perm_sections = $this->Application->getUnitOption($prefix_elems[0], 'PermSection');
if(!$this->Application->CheckPermission($perm_sections['main'].'.view')) {
$this->Application->Redirect('no_permission');
}
$export_helper->PrefixSpecial = $prefix_special;
$export_helper->grid = $this->Application->GetVar('grid');
$export_helper->ExportStep();
$event->status = erSTOP;
}
/**
* Returning created by AJAX CSV file
*
* @param kEvent $event
*/
function OnGetCSV(&$event)
{
$export_helper =& $this->Application->recallObject('CSVHelper');
/* @var $export_helper kCSVHelper */
$prefix_special = $export_helper->ExportData('prefix');
$prefix_elems = split('\.|_', $prefix_special, 2);
$perm_sections = $this->Application->getUnitOption($prefix_elems[0], 'PermSection');
if(!$this->Application->CheckPermission($perm_sections['main'].'.view')) {
$this->Application->Redirect('no_permission');
}
$export_helper->GetCSV();
}
/**
* Enter description here...
*
* @param kEvent $event
*/
function OnCSVImportBegin(&$event)
{
$prefix_special = $this->Application->GetVar('PrefixSpecial');
$prefix_elems = split('\.|_', $prefix_special, 2);
$perm_sections = $this->Application->getUnitOption($prefix_elems[0], 'PermSection');
if(!$this->Application->CheckPermission($perm_sections['main'].'.add') && !$this->Application->CheckPermission($perm_sections['main'].'.edit')) {
$this->Application->Redirect('no_permission');
}
$object =& $event->getObject( Array('skip_autoload' => true) );
/* @var $object kDBItem */
$items_info = $this->Application->GetVar( $event->getPrefixSpecial(true) );
$field_values = array_shift($items_info);
$object->SetFieldsFromHash($field_values);
$event->redirect = false;
$result = 'required';
if($object->GetDBField('ImportFile')) {
$import_helper =& $this->Application->recallObject('CSVHelper');
/* @var $import_helper kCSVHelper */
$import_helper->PrefixSpecial = $this->Application->GetVar('PrefixSpecial');
$import_helper->grid = $this->Application->GetVar('grid');
$result = $import_helper->ImportStart( $object->GetField('ImportFile', 'file_paths') );
if($result === true) {
$event->redirect = $this->Application->GetVar('next_template');
$event->SetRedirectParam('PrefixSpecial', $this->Application->GetVar('PrefixSpecial'));
$event->SetRedirectParam('grid', $this->Application->GetVar('grid'));
}
}
if($event->redirect === false) {
$object->SetError('ImportFile', $result);
$event->status = erFAIL;
}
}
/**
* Enter description here...
*
* @param kEvent $event
*/
function OnCSVImportStep(&$event)
{
$import_helper =& $this->Application->recallObject('CSVHelper');
/* @var $export_helper kCSVHelper */
$prefix_special = $import_helper->ImportData('prefix');
$prefix_elems = split('\.|_', $prefix_special, 2);
$perm_sections = $this->Application->getUnitOption($prefix_elems[0], 'PermSection');
if(!$this->Application->CheckPermission($perm_sections['main'].'.add') && !$this->Application->CheckPermission($perm_sections['main'].'.edit')) {
$this->Application->Redirect('no_permission');
}
$import_helper->ImportStep();
$event->status = erSTOP;
}
/**
* Shows unit config filename, where requested prefix is defined
*
* @param kEvent $event
*/
function OnCheckPrefixConfig(&$event)
{
$prefix = $this->Application->GetVar('config_prefix');
$config_file = $this->Application->UnitConfigReader->prefixFiles[$prefix];
ob_start();
?>
<html>
<head>
<title>Unit Config of "<?php echo $prefix; ?>" prefix</title>
</head>
<body bgcolor="#E7E7E7">
<a href="javascript:window.close();">Close Window</a><br /><br />
<strong>Prefix:</strong> <?php echo $prefix; ?><br />
<strong>Unit Config:</strong> <?php echo $GLOBALS['debugger']->highlightString($config_file); ?><br />
<br /><a href="javascript:window.close();">Close Window</a><br />
</body>
</html>
<?php
echo ob_get_clean();
$event->status = erSTOP;
}
function OnUploadFile(&$event)
{
// Flash uploader does NOT send correct cookies, so we need to make our own check
$cookie_name = 'adm_'.$this->Application->ConfigValue('SessionCookieName');
$this->Application->HttpQuery->Cookie['cookies_on'] = 1;
$this->Application->HttpQuery->Cookie[$cookie_name] = $this->Application->GetVar('flashsid');
$admin_ses =& $this->Application->recallObject('Session.admin');
/* @var $admin_ses Session */
$user = $admin_ses->RecallVar('user_id');
$perm_helper =& $this->Application->recallObject('PermissionsHelper');
/* @var $perm_helper kPermissionsHelper */
/*if() {
$prefix_special = $this->Application->GetVar('PrefixSpecial');
$prefix_elems = split('\.|_', $prefix_special, 2);
$perm_sections = $this->Application->getUnitOption($prefix_elems[0], 'PermSection');
$section = $perm_sections['main'];
}
else {*/
$section = $event->getSection();
/*}*/
if ($this->Application->GetVar('t') != 'import/import_start' && !$perm_helper->CheckUserPermission($user, $section.'.add') && !$perm_helper->CheckUserPermission($user, $section.'.edit')) {
$event->status = erPERM_FAIL;
header('HTTP/1.0 403 You don\'t have permissions to upload');
exit;
return;
}
if (!$cookie_name) $cookie_name = 'sid';
$value = $this->Application->GetVar('Filedata');
if (!$value) return ;
$tmp_path = WRITEABLE.'/tmp/';
$fname = $value['name'];
$id = $this->Application->GetVar('id');
if ($id) $fname = $id.'_'.$fname;
if (!is_writable($tmp_path)) {
header('HTTP/1.0 500 Write permissions not set on the server');
exit;
}
move_uploaded_file($value['tmp_name'], $tmp_path.$fname);
exit;
}
function OnDropTempTablesByWID(&$event)
{
$sid = $this->Application->GetSID();
$wid = $this->Application->GetVar('m_wid');
$tables = $this->Conn->GetCol('SHOW TABLES');
$mask_edit_table = '/'.TABLE_PREFIX.'ses_'.$sid.'_'.$wid.'_edit_(.*)$/';
foreach($tables as $table)
{
if( preg_match($mask_edit_table,$table,$rets) )
{
$this->Conn->Query('DROP TABLE IF EXISTS '.$table);
}
}
echo 'OK';
$event->status = erSTOP;
return ;
}
+
+
+ /**
+ * Backup all data
+ *
+ * @param kEvent $event
+ */
+ function OnBackup(&$event)
+ {
+
+ $a_tables = $this->Conn->GetCol('SHOW TABLES'); // array_keys($tables);
+ $TableNames = Array();
+ for($x=0;$x<count($a_tables);$x++)
+ {
+ if(substr($a_tables[$x],0,strlen(TABLE_PREFIX))==TABLE_PREFIX)
+ {
+ if (!strstr($a_tables[$x], 'ses_')) {
+ $TableNames[] = $a_tables[$x];
+ }
+ }
+ }
+// echo "<pre>"; print_r($TableNames); echo "</pre>";
+// exit;
+
+ $backupProgress = Array (
+ 'table_num' => 0,
+ 'table_names' => $TableNames,
+ 'table_count' => count($TableNames),
+ 'record_count' => 0,
+ 'file_name' => $this->Application->ConfigValue('Backup_Path')."/dump".adodb_mktime().".txt",
+ );
+ $this->Application->RemoveVar('adm.backupcomplete_filename');
+ $this->Application->RemoveVar('adm.backupcomplete_filesize');
+
+ $out = array();
+
+ for($x=0;$x<count($TableNames);$x++) {
+ if (!strstr($TableNames[$x], 'ses_')) {
+ $out[] = $this->GetTableCreate($TableNames[$x]);
+ }
+ }
+
+ $fp = fopen($backupProgress['file_name'], 'a');
+
+ $sql = "SELECT Name, Version FROM ".TABLE_PREFIX."Modules";
+ $r = $this->Conn->Query($sql);
+ foreach ($r AS $a_module) {
+ $version = $a_module['Version'];
+ fwrite($fp, "# ".$a_module['Name']." Version: $version;\n");
+ }
+ fwrite($fp, "#------------------------------------------\n\n");
+
+ fwrite($fp,implode("\n",$out));
+ fwrite($fp,"\n");
+
+ fclose($fp);
+
+ $this->Application->StoreVar('adm.backup_status', serialize($backupProgress));
+ $event->redirect = 'tools/backup2';
+ }
+
+ /**
+ * Perform next backup step
+ *
+ * @param kEvent $event
+ */
+ function OnBackupProgress(&$event)
+ {
+ $done_percent = $this->performBackup();
+
+ if ($done_percent == 100) {
+ $event->redirect = 'tools/backup3';
+ return ;
+ }
+
+ echo $done_percent;
+ $event->status = erSTOP;
+ }
+
+ /**
+ * Stops users import & redirect to import template
+ *
+ * @param kEvent $event
+ */
+ function OnBackupCancel(&$event)
+ {
+ $event->redirect = 'tools/backup1';
+ }
+
+ function performBackup()
+ {
+ $backupProgress = unserialize($this->Application->RecallVar('adm.backup_status'));
+// echo "<pre>"; print_r($backupProgress); echo "</pre>";
+// exit;
+ $CurrentTable = $backupProgress['table_names'][$backupProgress['table_num']];
+
+ // get records
+ $a_records = $this->insert_data($CurrentTable,$backupProgress['record_count'],50,"");
+// echo "<pre>"; print_r($a_records); echo "</pre>";
+// exit;
+
+ if ($a_records['num'] < 50) {
+ $backupProgress['table_num']++;
+ } else {
+ $backupProgress['record_count']+=50;
+ }
+
+ if ($a_records['sql']) {
+ $fp = fopen($backupProgress['file_name'], 'a');
+ fwrite($fp, $a_records['sql']);
+ fclose($fp);
+ }
+ $percent = ($backupProgress['table_num'] / $backupProgress['table_count']) * 100;
+ if ($percent >= 100) {
+ $percent = 100;
+ $this->Application->StoreVar('adm.backupcomplete_filename', $backupProgress['file_name']);
+ $this->Application->StoreVar('adm.backupcomplete_filesize', filesize($backupProgress['file_name']));
+ } else {
+ $this->Application->StoreVar('adm.backup_status', serialize($backupProgress));
+ }
+
+ return round($percent);
+
+ }
+
+ //extracts the rows of data from tables using limits
+ function insert_data($table, $start, $limit, $mywhere)
+ {
+// global $out;
+
+ if ($mywhere !="")
+ {
+ $whereclause= " WHERE ".$mywhere." ";
+ }
+ else
+ {
+ $whereclause = "";
+ }
+
+ $a_data = $this->Conn->Query("SELECT * from $table $whereclause LIMIT $start, $limit");
+// echo "SELECT * from $table $whereclause LIMIT $start, $limit";
+// echo "<pre>"; print_r($a_records); echo "</pre>";
+// exit;
+ if (!$a_data) {
+ return Array(
+ 'num' => 0,
+ 'sql' => '',
+ );
+ }
+// $prefix = GetTablePrefix();
+ $rowcount = 0;
+ $a_fields = array_keys($a_data[0]);
+ $fields_sql = '';
+ foreach ($a_fields AS $field_name) {
+ $fields_sql .= '`'.$field_name.'`,';
+ }
+ $fields_sql = preg_replace('/(.*),$/', '\\1', $fields_sql);
+ $temp = '';
+ foreach ($a_data AS $a_row)
+ {
+ $values_sql = '';
+ foreach ($a_row as $field_name => $field_value) {
+ $values_sql .= $this->Conn->qstr($field_value).',';
+ }
+ $values_sql = preg_replace('/(.*),$/', '\\1', $values_sql);
+ $temp .= 'INSERT INTO '.$table.' ('.$fields_sql.') VALUES ('.$values_sql.')';
+ }
+
+ $temp=ereg_replace("\n","\\n", $temp);
+ $temp=ereg_replace("\r","\\r", $temp);
+ if(strlen(TABLE_PREFIX))
+ {
+ $temp = str_replace("INSERT INTO $prefix","INSERT INTO ",$temp);
+ }
+
+ return Array(
+ 'num' => count($a_data),
+ 'sql' => $temp,
+ );
+ }
+
+
+
+ function GetTableCreate($table, $crlf="\n")
+ {
+ $schema_create = 'DROP TABLE IF EXISTS ' . $table . ';' . $crlf;
+ $schema_create .="# --------------------------------------------------------".$crlf;
+ $this->Conn->Query("SET SQL_QUOTE_SHOW_CREATE = 0");
+ $tmpres = $this->Conn->Query("SHOW CREATE TABLE $table");
+// echo "<pre>"; print_r($tmpres); echo "</pre>";
+// exit;
+ if(is_array($tmpres) && isset($tmpres[0]))
+ {
+ $tmpres = $tmpres[0];
+ $pos = strpos($tmpres["Create Table"], ' (');
+ $pos2 = strpos($tmpres["Create Table"], '(');
+ if ($pos2 != $pos + 1)
+ {
+ $pos = $pos2;
+ $tmpres["Create Table"] = str_replace(",", ",\n ", $tmpres["Create Table"]);
+ }
+
+ $tmpres["Create Table"] = substr($tmpres["Create Table"], 0, 13)
+ . (($use_backquotes) ? $tmpres["Table"] : $tmpres["Table"])
+ . substr($tmpres["Create Table"], $pos);
+ $tmpres["Create Table"] = str_replace("\n", $crlf, $tmpres["Create Table"]);
+ if (preg_match_all('((,\r?\n[\s]*(CONSTRAINT|FOREIGN[\s]*KEY)[^\r\n,]+)+)', $tmpres["Create Table"], $regs)) {
+ if (!isset($sql_constraints)) {
+ if (isset($GLOBALS['no_constraints_comments'])) {
+ $sql_constraints = '';
+ } else {
+ $sql_constraints = $crlf . '#' . $crlf
+ . '# ' . $GLOBALS['strConstraintsForDumped'] . $crlf
+ . '#' . $crlf;
+ }
+ }
+ if (!isset($GLOBALS['no_constraints_comments'])) {
+ $sql_constraints .= $crlf .'#' . $crlf .'# ' . $GLOBALS['strConstraintsForTable'] . ' ' . $table . $crlf . '#' . $crlf;
+ }
+ $sql_constraints .= 'ALTER TABLE $table $crlf '
+ . preg_replace('/(,\r?\n|^)([\s]*)(CONSTRAINT|FOREIGN[\s]*KEY)/', '\1\2ADD \3', substr($regs[0][0], 2))
+ . ";\n";
+ $tmpres["Create Table"] = preg_replace('((,\r?\n[\s]*(CONSTRAINT|FOREIGN[\s]*KEY)[^\r\n,]+)+)', '', $tmpres["Create Table"]);
+ }
+ $schema_create .= $tmpres["Create Table"];
+ }
+ if(strlen($schema_create))
+ {
+ $schema_create = str_replace("DROP TABLE IF EXISTS ".TABLE_PREFIX,"DROP TABLE ",$schema_create);
+ $schema_create = str_replace("CREATE TABLE ".TABLE_PREFIX,"CREATE TABLE ",$schema_create);
+ while(strlen($schema_create && substr($schema_create,-1)!=")"))
+ {
+ $schema_create = substr($schema_create,0,-1);
+ }
+ }
+ $schema_create .= "\n# --------------------------------------------------------\n";
+ return $schema_create;
+ }
+
+
+
}
\ No newline at end of file
Property changes on: branches/RC/core/units/admin/admin_events_handler.php
___________________________________________________________________
Modified: cvs2svn:cvs-rev
## -1 +1 ##
-1.8.2.14
\ No newline at end of property
+1.8.2.15
\ No newline at end of property
Index: branches/RC/core/units/admin/admin_config.php
===================================================================
--- branches/RC/core/units/admin/admin_config.php (revision 10717)
+++ branches/RC/core/units/admin/admin_config.php (revision 10718)
@@ -1,74 +1,97 @@
<?php
$config = Array(
'Prefix' => 'adm',
'ItemClass' => Array('class' => 'kDBItem','file'=>'','build_event'=>'OnItemBuild'),
'EventHandlerClass' => Array('class' => 'AdminEventsHandler', 'file' => 'admin_events_handler.php', 'build_event' => 'OnBuild'),
'TagProcessorClass' => Array('class' => 'AdminTagProcessor', 'file' => 'admin_tag_processor.php', 'build_event' => 'OnBuild'),
'QueryString' => Array(
1 => 'event',
),
'TitlePresets' => Array(
'tree_root' => Array('format' => '!la_section_overview!'),
'tree_reports' => Array('format' => '!la_section_overview!'),
'tree_system' => Array('format' => '!la_section_overview!'),
'tree_tools' => Array('format' => '!la_section_overview!'),
'system_tools' => Array('format' => '!la_title_SystemTools!'),
+
+ 'backup' => Array('format' => '!la_performing_backup!'),
'no_permissions' => Array('format' => '!la_title_NoPermissions!'),
'column_picker' => Array('format' => '!la_title_ColumnPicker!'),
'csv_export' => Array('format' => '!la_title_CSVExport!'),
'csv_import' => Array('format' => '!la_title_CSVImport!'),
),
'PermSection' => array('main' => 'in-portal:service'),
'Sections' => Array(
'in-portal:root' => Array(
'parent' => null,
'icon' => 'site',
'label' => $this->Application->ConfigValue('Site_Name'),
'url' => Array('t' => 'sections_list', 'pass' => 'm', 'pass_section' => true, 'no_amp' => 1),
'permissions' => Array('advanced:admin_login', 'advanced:front_login'),
'priority' => 0,
'type' => stTREE,
'icon_module' => 'in-portal',
),
'in-portal:service' => Array(
'parent' => 'in-portal:tools',
'icon' => 'conf_general',
'label' => 'la_tab_Service',
'url' => Array('t' => 'tools/system_tools', 'pass' => 'm'),
'permissions' => Array('view'),
'priority' => 10,
'show_mode' => smDEBUG,
'type' => stTREE,
),
+
+ 'in-portal:backup_new' => Array (
+ 'parent' => 'in-portal:tools',
+ 'icon' => 'in-portal:tool_backup',
+ 'label' => 'la_tab_Backup',
+ 'url' => Array ('t' => 'tools/backup1', 'pass' => 'm'),
+ 'permissions' => Array ('view'),
+ 'priority' => 2.5,
+ 'type' => stTREE,
+ ),
+
+ 'in-portal:service' => Array(
+ 'parent' => 'in-portal:tools',
+ 'icon' => 'conf_general',
+ 'label' => 'la_tab_Service',
+ 'url' => Array('t' => 'tools/system_tools', 'pass' => 'm'),
+ 'permissions' => Array('view'),
+ 'priority' => 10,
+ 'show_mode' => smDEBUG,
+ 'type' => stTREE,
+ ),
),
'Fields' => Array(), // we need empty array because kernel doesn't use virtual fields else
'VirtualFields' => Array (
'ImportFile' => Array (
'type' => 'string',
'formatter' => 'kUploadFormatter', 'max_size' => MAX_UPLOAD_SIZE, // in Bytes !
'error_msgs' => Array (
'cant_open_file' => '!la_error_CantOpenFile!',
'no_matching_columns' => '!la_error_NoMatchingColumns!',
),
'file_types' => '*.csv', 'files_description' => '!la_CSVFiles!',
'upload_dir' => '/system/import/', // relative to project's home
'multiple' => false, 'direct_links' => false,
'default' => null,
),
),
);
?>
\ No newline at end of file
Property changes on: branches/RC/core/units/admin/admin_config.php
___________________________________________________________________
Modified: cvs2svn:cvs-rev
## -1 +1 ##
-1.23.2.2
\ No newline at end of property
+1.23.2.3
\ No newline at end of property

Event Timeline