@@ -275,7 +275,7 @@ function toggleStartBox(name, hide, current) {
-
+
@@ -304,7 +304,7 @@ function toggleStartBox(name, hide, current) {
-', '
', '
', '', ''],
- '' . "\n" . '')
-
- ];
- }
- $SQL->freeresult($result);
-
- //submit
- if (ip('editdata'))
- {
- //Remove group_is_default from the current one
- if (p('group_is_default', 'int') == 1)
- {
- $update_query = [
- 'UPDATE' => "{$dbprefix}groups",
- 'SET' => 'group_is_default=0',
- 'WHERE' => 'group_is_default=1'
- ];
- $SQL->build($update_query);
-
- //update config value of the current default group
- update_config('default_group', $req_group);
- delete_cache('data_config');
- }
-
- //update not-configs data
- $update_query = [
- 'UPDATE' => "{$dbprefix}groups",
- 'SET' => 'group_is_default=' . p('group_is_default', 'int') . (ip('group_name') ? ", group_name='" . $SQL->escape(p('group_name')) . "'" : ''),
- 'WHERE' => 'group_id=' . $req_group
- ];
- $SQL->build($update_query);
-
- //delete cache ..
- delete_cache('data_groups');
- kleeja_admin_info($lang['CONFIGS_UPDATED'], true, '', true, basename(ADMIN_PATH) . '?cp=g_users');
- }
-
-break;
-
-//handling adding-editing allowed file extensions for requested group
-case 'group_exts':
- $req_group = ig('qg') ? g('qg', 'int') : 0;
-
- if (! $req_group)
- {
- kleeja_admin_err('ERROR-NO-ID', true, '', true, basename(ADMIN_PATH) . '?cp=' . basename(__file__, '.php'));
- }
-
- $group_name =str_replace(['{lang.ADMINS}', '{lang.USERS}', '{lang.GUESTS}'],
- [$lang['ADMINS'], $lang['USERS'], $lang['GUESTS']],
- $d_groups[$req_group]['data']['group_name']);
-
-
-
- //delete ext?
- $DELETED_EXT = $GE_INFO = false;
-
- if (ig('del'))
- {
- //check _GET Csrf token
- if (! kleeja_check_form_key_get('adm_users'))
- {
- kleeja_admin_err($lang['INVALID_GET_KEY'], true, $lang['ERROR'], true, $action, 2);
- }
-
- $req_ext = ig('del') ? g('del', 'int') : 0;
-
- if (! $req_ext)
- {
- kleeja_admin_err('ERROR-NO-EXT-ID', true, '', true, $action, 2);
- }
-
- $query_del = [
- 'DELETE' => "{$dbprefix}groups_exts",
- 'WHERE' => 'ext_id=' . $req_ext
- ];
-
- $SQL->build($query_del);
-
- //done
- $DELETED_EXT = $GE_INFO = 2;
- delete_cache('data_groups');
- }
-
- //add ext?
- $ADDED_EXT = false;
-
- if (ip('newext'))
- {
- $new_ext = ip('extisnew') ? preg_replace('/[^a-z0-9]/', '', strtolower(p('extisnew'))) : false;
-
- if (! $new_ext)
- {
- kleeja_admin_err($lang['EMPTY_EXT_FIELD'], true, '', true, basename(ADMIN_PATH) . '?cp=g_users&smt=group_exts&qg=' . $req_group);
- }
-
- //check if it's welcomed one
- //if he trying to be smart, he will add like ext1.ext2.php
- //so we will just look at last one
- $new_ext = explode('.', $new_ext);
- $new_ext = array_pop($new_ext);
- $check_ext = strtolower($new_ext);
-
- $not_welcomed_exts = ['php', 'php3', 'php5', 'php4', 'asp', 'aspx', 'shtml', 'html', 'htm', 'xhtml', 'phtml', 'pl', 'cgi', 'ini', 'htaccess', 'sql', 'txt'];
-
- if (in_array($check_ext, $not_welcomed_exts))
- {
- kleeja_admin_err(sprintf($lang['FORBID_EXT'], $check_ext), true, '', true, $action);
- }
-
- //check if there is any exists of this ext in db
- $query = [
- 'SELECT' => '*',
- 'FROM' => "{$dbprefix}groups_exts",
- 'WHERE' => "ext='" . $new_ext . "' and group_id=" . $req_group,
- ];
-
- $result = $SQL->build($query);
-
- if ($SQL->num_rows($result))
- {
- kleeja_admin_err(sprintf($lang['NEW_EXT_EXISTS_B4'], $new_ext), true, '', true, $action);
- }
-
- //add
- $default_size = '2097152';//bytes
- $insert_query = [
- 'INSERT' => 'ext ,group_id, size',
- 'INTO' => "{$dbprefix}groups_exts",
- 'VALUES' => "'$new_ext', $req_group, $default_size"
- ];
-
- $SQL->build($insert_query);
-
- //done
- $ADDED_EXT = $GE_INFO = 2;
- delete_cache('data_groups');
- }
-
- //if submit/update
- if (ip('editexts'))
- {
- $ext_ids = $_POST['size']; //is an array
-
- if (is_array($ext_ids))
- {
- foreach ($ext_ids as $e_id=>$e_val)
+ //update 'can' acls
+ if (sizeof($submitted_on_acls))
{
$update_query = [
- 'UPDATE' => "{$dbprefix}groups_exts",
- 'SET' => 'size=' . (intval($e_val)*1024),
- 'WHERE' => 'ext_id=' . intval($e_id) . ' AND group_id=' . $req_group
+ 'UPDATE' => "{$dbprefix}groups_acl",
+ 'SET' => 'acl_can=1',
+ 'WHERE' => "acl_name IN ('" . implode("', '", $submitted_on_acls) . "') AND group_id=" . $req_group
];
+
$SQL->build($update_query);
}
+ //update 'can not' acls
+ if (sizeof($submitted_off_acls))
+ {
+ $update_query2 = [
+ 'UPDATE' => "{$dbprefix}groups_acl",
+ 'SET' => 'acl_can=0',
+ 'WHERE' => "acl_name IN ('" . implode("', '", $submitted_off_acls) . "') AND group_id=" . $req_group
+ ];
+
+ $SQL->build($update_query2);
+ }
+
//delete cache ..
delete_cache('data_groups');
- kleeja_admin_info($lang['UPDATED_EXTS'], true, '', true, $action);
+ kleeja_admin_info($lang['CONFIGS_UPDATED'], true, '', true, basename(ADMIN_PATH) . '?cp=g_users');
}
- }
- //show exts
- $query = [
- 'SELECT' => 'ext_id, ext, size',
- 'FROM' => "{$dbprefix}groups_exts",
- 'WHERE' => 'group_id=' . $req_group,
- 'ORDER BY' => 'ext_id ASC'
- ];
+ break;
- $result = $SQL->build($query);
+ //handling editing settings for the requested group
+ case 'group_data':
+ $req_group = ig('qg') ? g('qg', 'int') : 0;
- $exts = [];
- while ($row=$SQL->fetch_array($result))
- {
- //handle big int
- $size = preg_match('/^[0-9]+/', $row['size'], $matches) ? $matches[0] : 0;
+ if (! $req_group)
+ {
+ kleeja_admin_err('ERROR-NO-ID', true, '', true, basename(ADMIN_PATH) . '?cp=g_users');
+ }
- $exts[] = [
- 'ext_id' => $row['ext_id'],
- 'ext_name' => $row['ext'],
- 'ext_size' => round($size / 1024),
- 'ext_icon' => file_exists(PATH . 'images/filetypes/' . $row['ext'] . '.png') ? PATH . 'images/filetypes/' . $row['ext'] . '.png' : PATH . 'images/filetypes/file.png'
+
+ // When user change language from start page, hurry hurry section, he comes here
+ if (ig('lang_change'))
+ {
+ //check _GET Csrf token
+ if (! kleeja_check_form_key_get('adm_start_actions'))
+ {
+ kleeja_admin_err($lang['INVALID_GET_KEY'], true, $lang['ERROR'], true, basename(ADMIN_PATH) . '?cp=start', 2);
+ }
+
+ $got_lang = preg_replace('[^a-zA-Z0-9]', '', g('lang_change'));
+
+ // -1 means all
+ if ($req_group == -1)
+ {
+ //general
+ update_config('language', $got_lang);
+
+ //all groups
+ foreach ($d_groups as $group_id => $group_info)
+ {
+ update_config('language', $got_lang, true, $group_id);
+ }
+
+ $group_name = $lang['ALL'];
+ }
+ else
+ {
+ update_config('language', $got_lang, true, $req_group);
+ $group_name = str_replace(
+ ['{lang.ADMINS}', '{lang.USERS}', '{lang.GUESTS}'],
+ [$lang['ADMINS'], $lang['USERS'], $lang['GUESTS']],
+ $d_groups[$req_group]['data']['group_name']
+ );
+ }
+
+
+ delete_cache('data_lang' . $got_lang);
+
+
+ //msg, done
+ kleeja_admin_info(
+ $lang['CONFIGS_UPDATED'] . ', ' . $lang['LANGUAGE'] . ':' . $got_lang . ' - ' . $lang['FOR'] . ':' . $group_name,
+ true,
+ '',
+ true,
+ basename(ADMIN_PATH) . '?cp=start'
+ );
+ }
+
+
+ $group_name = str_replace(
+ ['{lang.ADMINS}', '{lang.USERS}', '{lang.GUESTS}'],
+ [$lang['ADMINS'], $lang['USERS'], $lang['GUESTS']],
+ $d_groups[$req_group]['data']['group_name']
+ );
+ $gdata = $d_groups[$req_group]['data'];
+
+ $query = [
+ 'SELECT' => 'c.name, c.option, c.value',
+ 'FROM' => "{$dbprefix}config c",
+ 'WHERE' => "c.type='groups'",
+ 'ORDER BY' => 'c.display_order ASC'
];
- }
- $SQL->freeresult($result);
-
-
-break;
-
-//show users (from search keyword)
-case 'show_su':
-
- $filter = get_filter(g('search_id'), 'user_search', false, 'filter_uid');
-
- if (! $filter)
- {
- kleeja_admin_err($lang['ERROR_TRY_AGAIN'], true, $lang['ERROR'], true, basename(ADMIN_PATH) . '?cp=h_search&smt=users', 1);
- }
-
- $search = unserialize(htmlspecialchars_decode($filter['filter_value']));
-
- $usernamee = $search['username'] != '' ? 'AND (name LIKE \'%' . $SQL->escape($search['username']) . '%\' OR clean_name LIKE \'%' . $SQL->escape($search['username']) . '%\') ' : '';
- $usermailee = $search['usermail'] != '' ? 'AND mail LIKE \'%' . $SQL->escape($search['usermail']) . '%\' ' : '';
- $is_search = true;
-
- $query['WHERE'] = "name <> '' $usernamee $usermailee";
-
-//show users (for requested group)
-case 'show_group':
- if ($current_smt != 'show_su')
- {
- $is_search = true;
- $req_group = ig('qg') ? g('qg', 'int') : 0;
- $group_name =str_replace(['{lang.ADMINS}', '{lang.USERS}', '{lang.GUESTS}'],
- [$lang['ADMINS'], $lang['USERS'], $lang['GUESTS']],
- $d_groups[$req_group]['data']['group_name']);
-
- $query['WHERE'] = "name != '' AND group_id = " . $req_group;
- }
-
-//show users (all)
-case 'users':
-
- $query['SELECT'] = 'COUNT(id) AS total_users';
- $query['FROM'] = "{$dbprefix}users";
- $query['ORDER BY'] = 'id ASC';
-
- $result = $SQL->build($query);
-
-
- $nums_rows = 0;
- $n_fetch = $SQL->fetch_array($result);
- $nums_rows = $n_fetch['total_users'];
-
- //pagination
- $currentPage = ig('page') ? g('page', 'int') : 1;
- $Pager = new Pagination($perpage, $nums_rows, $currentPage);
- $start = $Pager->getStartRow();
-
- $no_results = false;
-
- if ($nums_rows > 0)
- {
- $query['SELECT'] = 'id, name, founder, group_id, last_visit';
- $query['LIMIT'] = "$start, $perpage";
$result = $SQL->build($query);
+ $data = [];
+ $cdata = $d_groups[$req_group]['configs'];
+ $STAMP_IMG_URL = file_exists(PATH . 'images/watermark.gif') ? PATH . 'images/watermark.gif' : PATH . 'images/watermark.png';
+
while ($row=$SQL->fetch_array($result))
{
- $userfile = $config['siteurl'] . ($config['mod_writer'] ? 'fileuser-' . $row['id'] . '.html' : 'ucp.php?go=fileuser&id=' . $row['id']);
+ //submit, why here ? dont ask me just accept it as it.
+ if (ip('editdata'))
+ {
+ is_array($plugin_run_result = Plugins::getInstance()->run('after_submit_adm_users_groupdata', get_defined_vars())) ? extract($plugin_run_result) : null; //run hook
+
+ $new[$row['name']] = p($row['name'], 'str', $row['value']);
+
+ $update_query = [
+ 'UPDATE' => "{$dbprefix}groups_data",
+ 'SET' => "value='" . $SQL->escape($new[$row['name']]) . "'",
+ 'WHERE' => "name='" . $row['name'] . "' AND group_id=" . $req_group
+ ];
+
+ $SQL->build($update_query);
+
+ continue;
+ }
+
+ if ($row['name'] == 'language')
+ {
+ $lngfiles = '';
+
+ //get languages
+ if ($dh = @opendir(PATH . 'lang'))
+ {
+ while (($file = readdir($dh)) !== false)
+ {
+ if (strpos($file, '.') === false && $file != '..' && $file != '.')
+ {
+ $lngfiles .= '' . "\n";
+ }
+ }
+ @closedir($dh);
+ }
+ }
+
+ $guest_disallowed_configs = ['enable_userfile', 'max_storage'];
+
+ if ($req_group == 2 && in_array($row['name'], $guest_disallowed_configs))
+ {
+ continue;
+ }
+
+ $data[] = [
+ 'option' =>
+ str_replace(
+ ['', '', '', '', '
'],
+ ['', '