Merge pull request #238 from kleeja-official/next-version

Version 3.1.7
This commit is contained in:
H.Rouatbi
2024-10-20 11:15:09 +01:00
committed by GitHub
174 changed files with 5832 additions and 6209 deletions

8
.gitignore vendored
View File

@@ -9,13 +9,13 @@ uploads/*
!uploads/.htaccess
!uploads/php.ini
!uploads/thumbs
uploads/thumbs/*
uploads/thumbs/
!uploads/thumbs/index.html
!uploads/thumbs/php.ini
!uploads/thumbs/.htaccess
styles/*
!styles/bootstrap/*
!styles/default/*
!styles/bootstrap/
!/styles/bootstrap/js/script.js
!styles/index.html
.DS_Store
*/.DS_Store
@@ -31,5 +31,5 @@ Project_Default.xml
.project
.vscode/launch.json
.htaccess
.php_cs.cache
.php-cs-fixer.cache
kleeja.db

View File

@@ -5,13 +5,13 @@ $finder = PhpCsFixer\Finder::create()
->in(__DIR__)
;
return PhpCsFixer\Config::create()
return (new PhpCsFixer\Config())
->setRules([
'binary_operator_spaces' => ['default' => 'align'],
'phpdoc_align' => true,
'array_indentation' => true,
'blank_line_before_statement' => ['statements' => [
'break', 'case', 'continue', 'default', 'die', 'for', 'foreach', 'if']
'break', 'case', 'continue', 'default', 'exit', 'for', 'foreach', 'if']
],
'braces' => ['position_after_control_structures' => 'next'],
'cast_spaces' => true,
@@ -22,7 +22,7 @@ return PhpCsFixer\Config::create()
'include' => true,
'indentation_type' => true,
'array_syntax' => ['syntax' => 'short'],
'lowercase_constants' => true,
'constant_case' => ['case' => 'lower'],
'method_chaining_indentation' => true,
'method_argument_space' => true,
'no_closing_tag' => true,

View File

@@ -3,6 +3,24 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
## 3.1.7
* add the ability to toggle multipart download for groups
* introduce custom admin path option
* compatibility with PHP 8.X
* add group max storage limit feature
* add the ability to delete files by extension
* change the default style to Bootstrap
* fix pagination issue with incorrect link generation
* introduce ajax upload (show upload progress bar and upload speed)
* fix the issue where correct username, password, and security code still shows "The security code is incorrect!"
* various bug fixes and improvements
## 3.1.6
* compatibility with `m3u` files
* change dashboard box colors
* fix rtl issue in bootstrap template
* kleeja new domain is `kleeja.net`
## 3.1.5
* fix hiding error msgs when updating kleeja
* hide update all buttun , when empty update's list

View File

@@ -1,83 +1,156 @@
<!-- Breadcrumbs -->
<ol class="breadcrumb">
<li class="breadcrumb-item"><a href="./">{lang.R_CPINDEX}</a></li>
<li class="breadcrumb-item active">{lang.R_FILES} (<span>{current_page}/{total_pages}</span>)</li>
<li class="breadcrumb-item active">
<IF NAME="current_smt == "> {lang.R_FILES} (<span>{current_page}/{total_pages}</span>)<ELSE>{lang.DEL_BY_EXT}
</IF>
</li>
</ol>
<IF NAME="is_search">
<div class="card">
<span>{lang.FIND_IP_FILES} ( {nums_rows} ) {lang.FILE} <IF NAME="nums_rows"> | <a href="{deletelink}" onclick="javascript:get_kleeja_link(this.href, '#content', {confirm:true}); return false;">{lang.DELETEALLRES}</a></IF></span>
</div>
<div class="card">
<span>{lang.FIND_IP_FILES} ( {nums_rows} ) {lang.FILE} <IF NAME="nums_rows"> | <a href="{deletelink}"
onclick="javascript:get_kleeja_link(this.href, '#content', {confirm:true}); return false;">{lang.DELETEALLRES}</a>
</IF></span>
</div>
</IF>
<IF NAME="current_smt == ">
<form method="post" name="filesform" action="{action}" id="files_form">
<form method="post" name="filesform" action="{action}" id="files_form">
<IF NAME="no_results">
<div class="alert alert-info">
{lang.NO_RESULT_USE_SYNC}
</div>
<IF NAME="no_results">
<div class="alert alert-info">
{lang.NO_RESULT_USE_SYNC}
</div>
<ELSE>
<!-- start data table -->
<div class="table-responsive">
<table class="table table-bordered table-hover table-striped table-sm" width="100%" cellspacing="0">
<thead>
<tr>
<th><a href="javascript:void(0);" onclick="checkAll(document.filesform, '_del', 'su');"
title="{lang.DELETE}">#</a></th>
<th style="width:20px;"></th>
<th style="white-space:nowrap;">
<a title="{lang.ALPHABETICAL_ORDER_FILES}"
href="{ord_action}&amp;order_by=real_filename">{lang.FILENAME}</a>
<a href="{page2_action}&amp;order_way=1"><i class="fa fa-sort-asc"
title="&uarr;"></i></a>
<a href="{page2_action}&amp;order_way=2"><i class="fa fa-sort-desc"
title="&darr;"></i></a>
</th>
<th><a title="{lang.ORDER_SIZE}" href="{ord_action}&amp;order_by=size">{lang.SIZE}</a>
</th>
<th><a href="{ord_action}&amp;order_by=folder">{lang.FILDER}</a></th>
<th><a href="{ord_action}&amp;order_by=user">{lang.BY}</a></th>
<th><a href="{ord_action}&amp;order_by=user_ip">{lang.IP}</a></th>
<th><a title="{lang.ORDER_TOTAL_DOWNLOADS}" href="{ord_action}&amp;order_by=uploads"><i
class="fa fa-download" title="{lang.FILEUPS}" data-toggle="tooltip"></i></a>
</th>
<th><a href="{ord_action}&amp;order_by=report"><i class="fa fa-flag"
title="{lang.NUMPER_REPORT}" data-toggle="tooltip"></i></a></th>
<th><a href="{ord_action}&amp;order_by=time">{lang.FILEDATE}</a></th>
</tr>
</thead>
<tbody>
<LOOP NAME="arr">
<tr id="su[{{id}}]" class="osilver">
<td><input type="checkbox" name="del_{{id}}" value="{{id}}"
onclick="change_color(this,'su[{{id}}]');" rel="_del" /></td>
<td style="width:20px;"><img src="{{typeicon}}" alt="{{type}}" title="{{type}}"
data-toggle="tooltip" /></td>
<td title="{{fullname}}" data-toggle="tooltip">{{name}}</td>
<td>{{size}}</td>
<td>{{folder}}</td>
<td>{{user}}</td>
<td>{{ip}} <a title="{lang.SHOWFILESBYIP}" href="{{showfilesbyip}}"><i
class="fa fa-search"></i></a></td>
<td>
<IF LOOP="direct"><i class="fa fa-bell-slash-o" title="{lang.DIRECT_FILE_NOTE}"
data-toggle="tooltip"></i>
<ELSE>{{ups}}
</IF>
</td>
<td>{{report}}</td>
<td title="{{time}}" data-toggle="tooltip">{{time_human}}</td>
<!-- admin files data td2 extra -->
</tr>
</LOOP>
</tbody>
</table>
</div>
<!-- end data table -->
<div class="form-group">
<!--<div class="col">[ <a href="javascript:void(0);" onclick="checkAll(document.filesform, '_del', 'su');">{lang.CHECK_ALL}</a> ]</div>-->
<input type="submit" class="btn btn-outline-primary" name="submit" value="{lang.DEL_SELECTED}">
</div>
<!-- pagination -->
{page_nums}
</IF>
{H_FORM_KEYS}
</form>
<ELSE>
<!-- start data table -->
<div class="table-responsive">
<table class="table table-bordered table-hover table-striped table-sm" width="100%" cellspacing="0">
<thead>
<tr>
<th><a href="javascript:void(0);" onclick="checkAll(document.filesform, '_del', 'su');" title="{lang.DELETE}">#</a></th>
<th style="width:20px;"></th>
<th style="white-space:nowrap;">
<a title="{lang.ALPHABETICAL_ORDER_FILES}"
href="{ord_action}&amp;order_by=real_filename">{lang.FILENAME}</a>
<a href="{page2_action}&amp;order_way=1"><i class="fa fa-sort-asc" title="&uarr;"></i></a>
<a href="{page2_action}&amp;order_way=2"><i class="fa fa-sort-desc"
title="&darr;"></i></a>
</th>
<th><a title="{lang.ORDER_SIZE}" href="{ord_action}&amp;order_by=size">{lang.SIZE}</a></th>
<th><a href="{ord_action}&amp;order_by=folder">{lang.FILDER}</a></th>
<th><a href="{ord_action}&amp;order_by=user">{lang.BY}</a></th>
<th><a href="{ord_action}&amp;order_by=user_ip">{lang.IP}</a></th>
<th><a title="{lang.ORDER_TOTAL_DOWNLOADS}" href="{ord_action}&amp;order_by=uploads"><i class="fa fa-download" title="{lang.FILEUPS}" data-toggle="tooltip"></i></a></th>
<th><a href="{ord_action}&amp;order_by=report"><i class="fa fa-flag" title="{lang.NUMPER_REPORT}" data-toggle="tooltip"></i></a></th>
<th><a href="{ord_action}&amp;order_by=time">{lang.FILEDATE}</a></th>
</tr>
</thead>
<tbody>
<LOOP NAME="arr">
<tr id="su[{{id}}]" class="osilver">
<td><input type="checkbox" name="del_{{id}}" value="{{id}}" onclick="change_color(this,'su[{{id}}]');" rel="_del" /></td>
<td style="width:20px;"><img src="{{typeicon}}" alt="{{type}}" title="{{type}}" data-toggle="tooltip"/></td>
<td title="{{fullname}}" data-toggle="tooltip">{{name}}</td>
<td>{{size}}</td>
<td>{{folder}}</td>
<td>{{user}}</td>
<td>{{ip}} <a title="{lang.SHOWFILESBYIP}" href="{{showfilesbyip}}"><i class="fa fa-search"></i></a></td>
<td><IF LOOP="direct"><i class="fa fa-bell-slash-o" title="{lang.DIRECT_FILE_NOTE}" data-toggle="tooltip"></i><ELSE>{{ups}}</IF></td>
<td>{{report}}</td>
<td title="{{time}}" data-toggle="tooltip">{{time_human}}</td>
<!-- admin files data td2 extra -->
</tr>
</LOOP>
</tbody>
</table>
<div class="container">
<IF NAME="no_results">
<div class="alert alert-info">
{lang.NO_RESULT_USE_SYNC}
</div>
<ELSE>
<form action="{action}" style="text-align: center;" method="post">
<div class="form-group">
<label for="selected_extnsions">{lang.SELECT_EXT}</label>
<select class="form-control" name="selected_extnsion" id="selected_extnsions">
<option></option>
<LOOP NAME="available_extensions">
<option>{{type}}</option>
</LOOP>
</select>
</div>
<p id="file_count_viewer"></p>
<button id="delete_button" style="display: none;" name="delete_files" type="submit"
class="btn btn-danger">{lang.DELETE}</button>
</form>
</IF>
</div>
<!-- end data table -->
<div class="form-group">
<!--<div class="col">[ <a href="javascript:void(0);" onclick="checkAll(document.filesform, '_del', 'su');">{lang.CHECK_ALL}</a> ]</div>-->
<input type="submit" class="btn btn-outline-primary" name="submit" value="{lang.DEL_SELECTED}">
</div>
<!-- pagination -->
{page_nums}
</IF>
{H_FORM_KEYS}
</form>
<script>
let selected_extnsions = document.getElementById('selected_extnsions');
let delete_button = document.getElementById('delete_button');
let file_count_viewer = document.getElementById('file_count_viewer');
if (selected_extnsions && delete_button) {
selected_extnsions.onchange = () => {
if (selected_extnsions.value.trim() != '') {
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function () {
if (this.readyState == 4 && this.status == 200) {
if (this.responseText == '0') {
alert('{lang.NO_FILE_WITH_EXT}')
delete_button.style.display = 'none';
}
else {
file_count_viewer.innerHTML = ("{lang.X_FILE_WITH_EXT}").replace('(x)', this.responseText)
delete_button.style.display = '';
}
}
};
xhttp.open("GET", "{action}&fetch_ext_files=" + selected_extnsions.value, true);
xhttp.send();
}
else {
delete_button.style.display = 'none';
file_count_viewer.innerHTML = ''
}
}
}
</script>
</IF>

View File

@@ -249,10 +249,12 @@ function downloadPlugin(name, nextPlugins) {
this.fail();
}
setTimeout(function() {
var currentPlugin = nextPlugins.shift();
downloadPlugin(currentPlugin, nextPlugins);
}, 500);
if (nextPlugins.length > 0) {
setTimeout(function() {
var currentPlugin = nextPlugins.shift();
downloadPlugin(currentPlugin, nextPlugins);
}, 500);
}
})
.fail(function(data) {
var tryAgainMsg = '{lang.ERROR_TRY_AGAIN}';

View File

@@ -30,7 +30,7 @@ function check_search_users_form(form)
var do_it = false;
if(form.username.value != '') {
do_it = true;
}else if(form.username.value != '') {
}else if(form.usermail.value != '') {
do_it = true;
}

View File

@@ -74,7 +74,7 @@ function toggleStartBox(name, hide, current) {
<IF NAME="ADM_NOTIFICATIONS">
<!-- notifications -->
<div class="card mb-3" id="notifications" style="display:(startBoxes.notifications.hidden?none:)">
<div class="card mb-3 admin-card" id="notifications" style="display:(startBoxes.notifications.hidden?none:)">
<div class="card-header">
<i class="fa fa-bell-o"></i> {lang.NOTIFICATIONS}
</div>
@@ -103,7 +103,7 @@ function toggleStartBox(name, hide, current) {
{extra_adm_start_html}
<!-- stats boxes -->
<div class="card mb-3" id="statsBoxes" style="display:(startBoxes.statsBoxes.hidden?none:)">
<div class="card mb-3 admin-card" id="statsBoxes" style="display:(startBoxes.statsBoxes.hidden?none:)">
<div class="card-header">
<i class="fa fa-bar-chart"></i> {lang.STATS_BOXES}
</div>
@@ -203,7 +203,7 @@ function toggleStartBox(name, hide, current) {
<!-- last visit actions -->
<IF NAME="last_visit">
<div class="card mb-3" id="lastVisitActions" style="display:(startBoxes.lastVisitActions.hidden?none:)">
<div class="card mb-3 admin-card" id="lastVisitActions" style="display:(startBoxes.lastVisitActions.hidden?none:)">
<div class="card-header">
{lang.LAST_VISIT} ({last_visit})
</div>
@@ -258,7 +258,7 @@ function toggleStartBox(name, hide, current) {
<!-- stats_chart -->
<IF NAME="stats_chart">
<div class="card mb-3" id="statsChart" style="display:(startBoxes.statsChart.hidden?none:)">
<div class="card mb-3 admin-card" id="statsChart" style="display:(startBoxes.statsChart.hidden?none:)">
<div class="card-header">
<i class="fa fa-area-chart"></i> {lang.STATS}
</div>
@@ -275,7 +275,7 @@ function toggleStartBox(name, hide, current) {
<!-- hurry hurry actions -->
<div class="card mb-3" id="hurryActions" style="display:(startBoxes.hurryActions.hidden?none:)">
<div class="card mb-3 admin-card" id="hurryActions" style="display:(startBoxes.hurryActions.hidden?none:)">
<div class="card-header">
{lang.HURRY_HURRY}
</div>
@@ -304,7 +304,7 @@ function toggleStartBox(name, hide, current) {
<!-- extra stats -->
<div class="card" id="extraStats" style="display:(startBoxes.extraStats.hidden?none:)">
<div class="card admin-card" id="extraStats" style="display:(startBoxes.extraStats.hidden?none:)">
<div class="card-header">{lang.OTHER_INFO}</div>
<ul class="list-group list-group-flush">
<li class="list-group-item d-flex justify-content-between">
@@ -314,8 +314,8 @@ function toggleStartBox(name, hide, current) {
<li class="list-group-item">
{lang.AFILES_SIZE_SPACE}
<br>
<div class="progress" style="width: 100%">
<div class="progress-bar" role="progressbar" aria-valuenow="{per1}" aria-valuemin="0" aria-valuemax="100">{per1}%</div>
<div class="progress">
<div class="progress-bar" role="progressbar" style="width: {per1}%;" aria-valuenow="{per1}" aria-valuemin="0" aria-valuemax="100">{per1}%</div>
</div>
</li>

View File

@@ -268,10 +268,11 @@
<br>
<IF NAME="arr">
<ul class="list-group">
<IF NAME="no_results">
<div class="alert alert-info">{lang.NOTHING}</div>
<ELSE>
<ul class="list-group">
<LOOP NAME="arr">
<li class="list-group-item d-flex justify-content-between">
<div class="col col-md-auto">
<h3>{{name}} <IF LOOP="founder==1"><i class="fa fa-star text-warning" title="{lang.FOUNDER}" data-toggle="tooltip" style="font-size: medium;vertical-align: top;"></i></IF></h3>
@@ -292,12 +293,8 @@
</div>
</div>
</li>
</LOOP>
</ul>
<ELSE>
<div class="alert alert-info">{lang.NOTHING}</div>
</IF>

View File

@@ -349,3 +349,7 @@ footer.sticky-footer {
@media (min-width: 992px) {
body.sidenav-toggled footer.sticky-footer {
width: calc(100% - 55px); } }
.admin-card:hover {
box-shadow: 0 0 6px rgb(21, 3, 122);
}

View File

@@ -30,6 +30,11 @@ if (! $username)
is_array($plugin_run_result = Plugins::getInstance()->run('user_not_admin_admin_page', get_defined_vars())) ? extract($plugin_run_result) : null; //run hook
redirect(PATH . 'ucp.php?go=login&return=' . urlencode(ADMIN_PATH . '?cp=' . $go_to));
}
elseif(! user_can('enter_acp'))
{
$usrcp->logout_cp();
redirect($config['siteurl']);
}
//get language of admin
get_lang('acp');
@@ -39,7 +44,7 @@ get_lang('acp');
//
if (
(empty($_SESSION['ADMINLOGIN']) || $_SESSION['ADMINLOGIN'] != md5(sha1($config['h_key']) . $usrcp->name() . $config['siteurl'])) ||
(empty($_SESSION['USER_SESS']) || $_SESSION['USER_SESS'] != KJ_SESSION) ||
(empty($_SESSION['USER_SESS']) || $_SESSION['USER_SESS'] != KJ_SESSION) ||
(empty($_SESSION['ADMINLOGIN_T']) || $_SESSION['ADMINLOGIN_T'] < time())
) {
if (ig('go') && g('go') == 'login')
@@ -189,9 +194,9 @@ else
}
(! defined('LAST_VISIT')) ? define('LAST_VISIT', time() - 3600 * 12) : null;
//last visit
$last_visit = defined('LAST_VISIT') && preg_match('/[0-9]{10}/', LAST_VISIT) ? kleeja_date(LAST_VISIT) : false;
$last_visit = $usrcp->last_visit();
$last_visit = $last_visit && preg_match('/[0-9]{10}/', $last_visit) ? kleeja_date($last_visit) : false;
//
//exceptional
@@ -292,41 +297,41 @@ $adm_extensions_menu = $adm_topmenu = [];
//sort the items as alphabetic !
sort($adm_extensions);
$i = 0;
$cr_time = LAST_VISIT > 0 ? LAST_VISIT : time() - 3600*12;
$cr_time = $usrcp->last_visit() > 0 ? $usrcp->last_visit() : time() - 3600*12;
// check calls and reports numbers
if (ig('check_msgs') || ! ig('_ajax_')):
//small bubble system
//any item can show what is inside it as unread messages
$kbubbles = [];
//small bubble system
//any item can show what is inside it as unread messages
$kbubbles = [];
//for calls and reports
foreach (['call'=>'calls', 'reports'=>'reports'] as $table=>$n)
{
$query = [
'SELECT' => 'COUNT(' . $table[0] . '.id) AS total_rows',
'FROM' => "`{$dbprefix}" . $table . '` ' . $table[0]
];
//for calls and reports
foreach (['call'=>'calls', 'reports'=>'reports'] as $table=>$n)
{
$query = [
'SELECT' => 'COUNT(' . $table[0] . '.id) AS total_rows',
'FROM' => "`{$dbprefix}" . $table . '` ' . $table[0]
];
$fetched = $SQL->fetch_array($SQL->build($query));
$fetched = $SQL->fetch_array($SQL->build($query));
$kbubbles[$n] = $fetched['total_rows'];
$kbubbles[$n] = $fetched['total_rows'];
$SQL->freeresult();
}
$SQL->freeresult();
}
//if ajax, echo differntly
if (ig('check_msgs'))
{
$SQL->close();
//if ajax, echo differntly
if (ig('check_msgs'))
{
$SQL->close();
exit($kbubbles['calls'] . '::' . $kbubbles['reports']);
}
exit($kbubbles['calls'] . '::' . $kbubbles['reports']);
}
//add your own bubbles here
is_array($plugin_run_result = Plugins::getInstance()->run('kbubbles_admin_page', get_defined_vars())) ? extract($plugin_run_result) : null; //run hook
is_array($plugin_run_result = Plugins::getInstance()->run('kbubbles_admin_page', get_defined_vars())) ? extract($plugin_run_result) : null; //run hook
endif;
@@ -455,9 +460,10 @@ else
{
$is_ajax = 'yes';
echo_ajax(1,
empty($adminAjaxContent) ? $tpl->display($stylee, $styleePath) : $adminAjaxContent,
$go_menu_html
echo_ajax(
1,
empty($adminAjaxContent) ? $tpl->display($stylee, $styleePath) : $adminAjaxContent,
$go_menu_html
);
}

53
do.php
View File

@@ -31,7 +31,7 @@ if (ig('id') || ig('filename'))
is_array($plugin_run_result = Plugins::getInstance()->run('begin_download_id_filename', get_defined_vars())) ? extract($plugin_run_result) : null; //run hook
$query = [
'SELECT' => 'f.id, f.real_filename, f.name, f.folder, f.size, f.time, f.uploads, f.type',
'SELECT' => 'f.id, f.real_filename, f.about, f.name, f.folder, f.size, f.time, f.uploads, f.type',
'FROM' => "{$dbprefix}files f",
'LIMIT' => '1',
];
@@ -84,13 +84,23 @@ if (ig('id') || ig('filename'))
$size = $file_info['size'];
$time = $file_info['time'];
$uploads = $file_info['uploads'];
$about_file = ! in_array($file_info['about'], ['', null]) ? $file_info['about'] : $lang['FILE_NO_INFO'];
$fname2 = str_replace('.', '-', htmlspecialchars($name));
$name = $real_filename != '' ? str_replace('.' . $type, '', htmlspecialchars($real_filename)) : $name;
$name = strlen($name) > 70 ? substr($name, 0, 70) . '...' : $name;
$fusername = $config['user_system'] == 1 && $file_info['fuserid'] > -1 ? $file_info['fusername'] : false;
$userfolder = $config['siteurl'] . ($config['mod_writer'] ? 'fileuser-' . $file_info['fuserid'] . '.html' : 'ucp.php?go=fileuser&amp;id=' . $file_info['fuserid']);
$fname2 = str_replace('.', '-', htmlspecialchars($name));
$name = $real_filename != '' ? str_replace('.' . $type, '', htmlspecialchars($real_filename)) : $name;
$name = strlen($name) > 70 ? substr($name, 0, 70) . '...' : $name;
$fusername = $config['user_system'] == 1 && $file_info['fuserid'] > -1 ? $file_info['fusername'] : false;
$userfolder = $config['siteurl'] . ($config['mod_writer'] ? 'fileuser-' . $file_info['fuserid'] . '.html' : 'ucp.php?go=fileuser&amp;id=' . $file_info['fuserid']);
$isFileOwnerOfFounder = ($fusername == $usrcp->name() && $usrcp->name()) || ($usrcp->id() < 1 ? false : $usrcp->get_data('founder')['founder'] == 1);
if (ip('change_file_about') && $isFileOwnerOfFounder)
{
$newAbout = (String) p('about') != '' ? (string) p('about') : null;
$SQL->query("UPDATE {$dbprefix}files SET about = \"{$newAbout}\" WHERE id = {$file_info['id']}");
exit;
}
if (ig('filename'))
{
@@ -174,9 +184,9 @@ if (ig('id') || ig('filename'))
// x : used only for html links, where x = extension, downf is filename without extension
elseif (ig('down') || ig('downf') ||
ig('img') || ig('imgf') ||
ig('img') || ig('imgf') ||
ig('thmb') || ig('thmbf') ||
ig('downex') || ig('downexf'))
ig('downex') || ig('downexf'))
{
is_array($plugin_run_result = Plugins::getInstance()->run('begin_down_go_page', get_defined_vars())) ? extract($plugin_run_result) : null; //run hook
@@ -292,7 +302,7 @@ elseif (ig('down') || ig('downf') ||
$is_live = false;
$pre_ext = ! empty($filename) && strpos($filename, '.') !== false ? explode('.', $filename) : [];
$pre_ext = array_pop($pre_ext);
$pre_ext = ! empty($pre_ext) ? array_pop($pre_ext) : '';
$is_image = in_array(strtolower(trim($pre_ext)), ['gif', 'jpg', 'jpeg', 'bmp', 'png']) ? true : false;
@@ -386,7 +396,7 @@ elseif (ig('down') || ig('downf') ||
//download process
$path_file = ig('thmb') || ig('thmbf') ? "./{$f}/thumbs/{$n}" : "./{$f}/{$n}";
$chunksize = 8192;
$resuming_on = true;
$resuming_on = $config['enable_multipart'] == 1;
is_array($plugin_run_result = Plugins::getInstance()->run('down_go_page', get_defined_vars())) ? extract($plugin_run_result) : null; //run hook
@@ -495,7 +505,15 @@ elseif (ig('down') || ig('downf') ||
//send file headers
header('Pragma: public');
header('Accept-Ranges: bytes');
if ($resuming_on)
{
header('Accept-Ranges: bytes');
}
else
{
header('Accept-Ranges: none');
}
header('Content-Description: File Transfer');
//dirty fix
@@ -522,14 +540,23 @@ elseif (ig('down') || ig('downf') ||
{
list($a, $range) = explode('=', $_SERVER['HTTP_RANGE'], 2);
list($range) = explode(',', $range, 2);
list($range, $range_end) = explode('=', $range);
list($range, $range_end) = explode('-', $range, 2);
$range = round(floatval($range), 0);
$range_end = ! $range_end ? $size - 1 : round(floatval($range_end), 0);
if ($range < 0 || $range >= $size || $range > $range_end || $range_end >= $size)
{
header('HTTP/1.1 416 Requested Range Not Satisfiable');
header("Content-Range: bytes */$size");
fclose($fp);
exit;
}
$partial_length = $range_end - $range + 1;
header('HTTP/1.1 206 Partial Content');
header("Content-Length: $partial_length");
header('Content-Range: bytes ' . ($range - $range_end / $size));
header("Content-Range: bytes $range-$range_end/$size");
fseek($fp, $range);
}

176
go.php
View File

@@ -53,9 +53,11 @@ switch ($current_go_case)
'ext' => $ext,
'size' => readable_size($size),
'group' => $gid,
'group_name' => str_replace(['{lang.ADMINS}', '{lang.USERS}', '{lang.GUESTS}'],
[$lang['ADMINS'], $lang['USERS'], $lang['GUESTS']],
$d_groups[$gid]['data']['group_name']),
'group_name' => str_replace(
['{lang.ADMINS}', '{lang.USERS}', '{lang.GUESTS}'],
[$lang['ADMINS'], $lang['USERS'], $lang['GUESTS']],
$d_groups[$gid]['data']['group_name']
),
'most_firstrow' => $same_group == 0 ? true : false,
'firstrow' => $same_group ==0 or $same_group != $gid ? true : false,
'rando' => $rando,
@@ -67,10 +69,10 @@ switch ($current_go_case)
is_array($plugin_run_result = Plugins::getInstance()->run('guide_go_page', get_defined_vars())) ? extract($plugin_run_result) : null; //run hook
break;
break;
//
//Page of reporting
//Page of reporting
//
case 'report' :
@@ -178,7 +180,7 @@ switch ($current_go_case)
if (empty($ERRORS))
{
$name = $NOT_USER ? (string) $SQL->escape(p('rname')) : $usrcp->name();
$text = (string) $SQL->escape(p('rtext'));
$text = (string) $SQL->real_escape(nl2br(p('rtext')));
$mail = $NOT_USER ? (string) strtolower(trim($SQL->escape(p('rmail')))) : $usrcp->mail();
$url = (string) ip('rid') ? $SQL->escape($url_id) : $SQL->real_escape(p('surl'));
$time = (int) time();
@@ -218,10 +220,10 @@ switch ($current_go_case)
is_array($plugin_run_result = Plugins::getInstance()->run('report_go_page', get_defined_vars())) ? extract($plugin_run_result) : null; //run hook
break;
break;
//
//Pages of rules
//Pages of rules
//
case 'rules' :
@@ -231,10 +233,10 @@ switch ($current_go_case)
is_array($plugin_run_result = Plugins::getInstance()->run('rules_go_page', get_defined_vars())) ? extract($plugin_run_result) : null; //run hook
break;
break;
//
//Page of call-us
//Page of call-us
//
case 'call' :
@@ -307,7 +309,7 @@ switch ($current_go_case)
if (empty($ERRORS))
{
$name = $NOT_USER ? (string) $SQL->escape(p('cname')) : $usrcp->name();
$text = (string) $SQL->escape(p('ctext'));
$text = (string) $SQL->real_escape(nl2br(p('ctext')));
$mail = $NOT_USER ? (string) strtolower(trim($SQL->escape(p('cmail')))) : $usrcp->mail();
$timee = (int) time();
$ip = get_ip();
@@ -330,10 +332,10 @@ switch ($current_go_case)
is_array($plugin_run_result = Plugins::getInstance()->run('call_go_page', get_defined_vars())) ? extract($plugin_run_result) : null; //run hook
break;
break;
//
//Page for requesting delete file
//Page for requesting delete file
//
case 'del' :
@@ -361,7 +363,7 @@ switch ($current_go_case)
if (ig('sure') && g('sure') == 'ok')
{
$query = [
'SELECT' => 'f.id, f.name, f.folder, f.size, f.type',
'SELECT' => 'f.id, f.name, f.folder, f.size, f.type, f.user',
'FROM' => "{$dbprefix}files f",
'WHERE' => "f.code_del='" . $cd . "'",
'LIMIT' => '1',
@@ -376,6 +378,7 @@ switch ($current_go_case)
while ($row=$SQL->fetch_array($result))
{
@kleeja_unlink($row['folder'] . '/' . $row['name']);
//delete thumb
if (file_exists($row['folder'] . '/thumbs/' . $row['name']))
{
@@ -402,6 +405,19 @@ switch ($current_go_case)
];
$SQL->build($update_query);
if ($row['user']!=-1)
{
//update user storage size
$update_query = [
'UPDATE' => "{$dbprefix}users",
'SET' => 'storage_size=storage_size-' . $row['size'],
'WHERE' => 'id=' . $row['user'],
];
$SQL->build($update_query);
}
kleeja_info($lang['DELETE_SUCCESFUL']);
}
else
@@ -414,6 +430,10 @@ switch ($current_go_case)
$SQL->freeresult($result);
}
else
{
kleeja_info($lang['NOT_FOUND']);
}
}
else
{
@@ -433,10 +453,10 @@ switch ($current_go_case)
}
}//else
break;
break;
//
//Page of Kleeja stats
//Page of Kleeja stats
//
case 'stats' :
@@ -477,11 +497,11 @@ switch ($current_go_case)
is_array($plugin_run_result = Plugins::getInstance()->run('stats_go_page', get_defined_vars())) ? extract($plugin_run_result) : null; //run hook
break;
break;
//
// Page for redirect to downloading a file
// [!] depreacted from 1rc6+, see do.php
// Page for redirect to downloading a file
// [!] depreacted from 1rc6+, see do.php
//
case 'down':
@@ -500,10 +520,10 @@ switch ($current_go_case)
exit;
break;
break;
//
// for queue
// for queue
//
case 'queue':
@@ -517,11 +537,11 @@ switch ($current_go_case)
//do some of the queue ..
if (preg_match('/:del_[a-z0-9]{0,3}calls:/i', $config['queue']))
{
klj_clean_old('call', (strpos(':del_allcalls:', $config['queue']) !== false ? 'all': 30));
klj_clean_old('call', (strpos($config['queue'], ':del_allcalls:') !== false ? 'all': 30));
}
elseif (preg_match('/:del_[a-z0-9]{0,3}reports:/i', $config['queue']))
{
klj_clean_old('reports', (strpos(':del_allreports:', $config['queue']) !== false ? 'all': 30));
klj_clean_old('reports', (strpos($config['queue'], ':del_allreports:') !== false ? 'all': 30));
}
elseif ((int) $config['del_f_day'] > 0)
{
@@ -536,10 +556,10 @@ switch ($current_go_case)
exit;
break;
break;
//
//this is a part of ACP, only admins can access this part of page
//this is a part of ACP, only admins can access this part of page
//
case 'resync':
@@ -557,73 +577,73 @@ switch ($current_go_case)
switch (g('case')):
//
//re-sync total files number ..
//re-sync total files number ..
//
case 'sync_files':
case 'sync_files':
//no start ? or there
$start = ! ig('start') ? false : g('start', 'int');
//no start ? or there
$start = ! ig('start') ? false : g('start', 'int');
$end = sync_total_files(true, $start);
$end = sync_total_files(true, $start);
//no end, then sync'ing is done...
if (! $end)
{
delete_cache('data_stats');
$text = $title = sprintf($lang['SYNCING_DONE'], $lang['ALL_FILES']);
$link_to_go = './admin/?cp=r_repair#!cp=r_repair';
}
else
{
$text = $title = sprintf($lang['SYNCING'], $lang['ALL_FILES']) . ' (' . (! $start ? 0 : $start) . '->' . (! $end ? '?' : $end) . ')';
$link_to_go = './go.php?go=resync&case=sync_files&start=' . $end;
}
//no end, then sync'ing is done...
if (! $end)
{
delete_cache('data_stats');
$text = $title = sprintf($lang['SYNCING_DONE'], $lang['ALL_FILES']);
$link_to_go = './' . $customadminpath . '/?cp=r_repair#!cp=r_repair';
}
else
{
$text = $title = sprintf($lang['SYNCING'], $lang['ALL_FILES']) . ' (' . (! $start ? 0 : $start) . '->' . (! $end ? '?' : $end) . ')';
$link_to_go = './go.php?go=resync&case=sync_files&start=' . $end;
}
//to be sure !
$text .= '<script type="text/javascript"> setTimeout("location.href=\'' . $link_to_go . '\';", 3000);</script>' . "\n";
//to be sure !
$text .= '<script type="text/javascript"> setTimeout("location.href=\'' . $link_to_go . '\';", 3000);</script>' . "\n";
kleeja_info($text, $title, true, $link_to_go, 2);
kleeja_info($text, $title, true, $link_to_go, 2);
break;
break;
//
//re-sync total images number ..
//re-sync total images number ..
//
case 'sync_images':
case 'sync_images':
//no start ? or there
$start = ! ig('start') ? false : g('start', 'int');
//no start ? or there
$start = ! ig('start') ? false : g('start', 'int');
$end = sync_total_files(false, $start);
$end = sync_total_files(false, $start);
//no end, then sync'ing is done...
if (! $end)
{
delete_cache('data_stats');
$text = $title = sprintf($lang['SYNCING_DONE'], $lang['ALL_IMAGES']) . ' (' . (! $start ? 0 : $start) . '->' . (! $end ? '?' : $end) . ')';
$link_to_go = './admin/?cp=r_repair#!cp=r_repair';
}
else
{
$text = $title = sprintf($lang['SYNCING'], $lang['ALL_IMAGES']);
$link_to_go = './go.php?go=resync&case=sync_images&start=' . $end;
}
//no end, then sync'ing is done...
if (! $end)
{
delete_cache('data_stats');
$text = $title = sprintf($lang['SYNCING_DONE'], $lang['ALL_IMAGES']) . ' (' . (! $start ? 0 : $start) . '->' . (! $end ? '?' : $end) . ')';
$link_to_go = './' . $customadminpath . '/?cp=r_repair#!cp=r_repair';
}
else
{
$text = $title = sprintf($lang['SYNCING'], $lang['ALL_IMAGES']);
$link_to_go = './go.php?go=resync&case=sync_images&start=' . $end;
}
//to be sure !
$text .= '<script type="text/javascript"> setTimeout("location.href=\'' . $link_to_go . '\';", 3000);</script>' . "\n";
//to be sure !
$text .= '<script type="text/javascript"> setTimeout("location.href=\'' . $link_to_go . '\';", 3000);</script>' . "\n";
kleeja_info($text, $title, true, $link_to_go, 2);
kleeja_info($text, $title, true, $link_to_go, 2);
break;
break;
endswitch;
break;
break;
/**
* Ajax get uploading progress
*/
/**
* Ajax get uploading progress
*/
case 'uploading_progress':
header('Content-type: application/json; charset=UTF-8');
@@ -641,10 +661,10 @@ switch ($current_go_case)
// }
if (! function_exists('ini_get'))
{
exit(json_encode($result_data));
}
if (! function_exists('ini_get'))
{
exit(json_encode($result_data));
}
$key = ini_get('session.upload_progress.prefix') . $field_value;
@@ -663,8 +683,8 @@ switch ($current_go_case)
//
// Default , if you are a developer , you can embed your page here with this hook
// by using g('go') and your codes.
// Default , if you are a developer , you can embed your page here with this hook
// by using g('go') and your codes.
//
default:
@@ -677,7 +697,7 @@ switch ($current_go_case)
kleeja_err($lang['ERROR_NAVIGATATION']);
}
break;
break;
}//end switch
is_array($plugin_run_result = Plugins::getInstance()->run('end_go_page', get_defined_vars())) ? extract($plugin_run_result) : null; //run hook

View File

@@ -127,13 +127,14 @@ class FetchFile
if ($result === false)
{
$error = true;
kleeja_log(sprintf("cUrl error (#%d): %s\n", curl_errno($ch), htmlspecialchars(curl_error($ch))));
}
curl_close($ch);
fclose($out);
return true;
return isset($error) ? false : true;
}
else
{
@@ -141,11 +142,13 @@ class FetchFile
if ($data === false)
{
$error = true;
kleeja_log(sprintf("FetchFile error (curl: #%d): %s\n", curl_errno($ch), htmlspecialchars(curl_error($ch))));
}
curl_close($ch);
return $data;
return isset($error) ? false : $data;
}
}

View File

@@ -18,7 +18,6 @@ if (! defined('IN_COMMON'))
interface KleejaUploader
{
/**
* set the allowed extensions of uploaded files
* @param array $allowed_file_extensions an array of allowed extensions, and sizes ['gif'=>122, 'png'=>2421 ..]

View File

@@ -99,7 +99,7 @@ if ($current_smt != 'all')
}
elseif ($current_smt == 'all')
{
$query['WHERE'] = "type <> 'groups' OR type = ''";
$query['WHERE'] = "(type <> 'groups' OR type = '') AND type <> '0'";
}
$result = $SQL->build($query);
@@ -214,15 +214,11 @@ while ($row=$SQL->fetch_array($result))
{
if (! file_exists(PATH . '.htaccess') && file_exists(PATH . 'htaccess.txt') && function_exists('rename'))
{
rename(PATH . 'htaccess.txt', PATH . '.htaccess');
if (! file_exists(PATH . '.htaccess'))
if (! rename(PATH . 'htaccess.txt', PATH . '.htaccess'))
{
chmod(PATH . '.htaccess', K_FILE_CHMOD);
chmod(PATH . 'htaccess.txt', K_FILE_CHMOD);
rename(PATH . 'htaccess.txt', PATH . '.htaccess');
}
//re-do after chmod
rename(PATH . 'htaccess.txt', PATH . '.htaccess');
}
}
}
@@ -279,9 +275,10 @@ foreach ($types as $typekey => $type)
if ($option['type'] == $typekey)
{
$options .= str_replace(
['<input ', '<select ', '<td>', '</td>', '<label>', '<tr>', '</tr>'],
['<input class="form-control" ', '<select class="form-control" ', '<div class="form-group">', '</div>', '<label class="form-check-label">', '', ''],
$option['option']);
['<input ', '<select ', '<td>', '</td>', '<label>', '<tr>', '</tr>'],
['<input class="form-control" ', '<select class="form-control" ', '<div class="form-group">', '</div>', '<label class="form-check-label">', '', ''],
$option['option']
);
}
}
}
@@ -289,7 +286,6 @@ foreach ($types as $typekey => $type)
//after submit
if (ip('submit'))
{
//some configs need refresh page ..
$need_refresh_configs = ['language'];

View File

@@ -17,6 +17,7 @@ if (! defined('IN_ADMIN'))
//number of images per page
$files_acp_perpage = defined('ACP_FILES_PER_PAGE') ? ACP_FILES_PER_PAGE : 20;
$current_smt = preg_replace('/[^a-z0-9_]/i', '', g('smt', 'str', ''));
//display
@@ -30,7 +31,7 @@ $url_pg = ig('page') ? '&amp;page=' . g('page', 'int') : '';
$page_action = basename(ADMIN_PATH) . '?cp=' . basename(__file__, '.php') . $url_or . $url_sea . $url_lst;
$ord_action = basename(ADMIN_PATH) . '?cp=' . basename(__file__, '.php') . $url_pg . $url_sea . $url_lst;
$page2_action = basename(ADMIN_PATH) . '?cp=' . basename(__file__, '.php') . $url_or2 . $url_sea . $url_lst;
$action = $page_action . $url_pg;
$action = $page_action . $url_pg . ($current_smt == 'delete_by_extension' ? '&smt=delete_by_extension' : '');
$is_search = $affected = false;
$H_FORM_KEYS = kleeja_add_form_key('adm_files');
@@ -65,7 +66,7 @@ if (ip('submit'))
foreach ($del as $key => $id)
{
$query = [
'SELECT' => 'f.id, f.name, f.folder, f.size, f.type',
'SELECT' => 'f.id, f.name, f.folder, f.size, f.type, f.user',
'FROM' => "{$dbprefix}files f",
'WHERE' => 'f.id = ' . intval($id),
];
@@ -76,6 +77,7 @@ if (ip('submit'))
{
//delete from folder ..
@kleeja_unlink(PATH . $row['folder'] . '/' . $row['name']);
//delete thumb
if (file_exists(PATH . $row['folder'] . '/thumbs/' . $row['name']))
{
@@ -95,6 +97,12 @@ if (ip('submit'))
$files_num++;
}
$sizes += $row['size'];
//Subtract size from storage of the user
if ($row['user'] != -1)
{
$SQL->query("UPDATE {$dbprefix}users SET storage_size=storage_size-" . $row['size'] . ' WHERE id=' . $row['user']);
}
}
}
@@ -133,11 +141,10 @@ if (ip('submit'))
'<script type="text/javascript"> setTimeout("get_kleeja_link(\'' . str_replace('&amp;', '&', $action) . '\');", 2000);</script>' . "\n";
$stylee = 'admin_info';
}
else
elseif ($current_smt == '')
{
//
//Delete all user files [only one user]
//Delete all user files [only one user]
//
if (ig('deletefiles'))
{
@@ -252,6 +259,12 @@ else
{
//get search filter
$filter = get_filter(g('search_id'), 'file_search', false, 'filter_uid');
if (! $filter)
{
kleeja_admin_err($lang['ERROR_TRY_AGAIN'], true, $lang['ERROR'], true, basename(ADMIN_PATH) . '?cp=h_search', 1);
}
$deletelink = basename(ADMIN_PATH) . '?cp=' . basename(__file__, '.php') . '&deletefiles=' . g('search_id');
$is_search = true;
$query['WHERE'] = build_search_query(unserialize(htmlspecialchars_decode($filter['filter_value'])));
@@ -260,6 +273,10 @@ else
{
$query['WHERE'] = 'f.time > ' . intval($_REQUEST['last_visit']);
}
else
{
$do_not_query_total_files = true;
}
//to-be-deleted
//it is becoming a headache for a big websites. We do not have the time to figure out a solution
@@ -268,10 +285,6 @@ else
{
$query['ORDER BY'] = 'f.' . $SQL->escape($_REQUEST['order_by']);
}
else
{
$do_not_query_total_files = true;
}
if (! ig('search_id'))
{
@@ -279,10 +292,6 @@ else
$img_types = ['gif','jpg','png','bmp','jpeg','GIF','JPG','PNG','BMP','JPEG'];
$query['WHERE'] = (empty($query['WHERE']) ? '' : $query['WHERE'] . ' AND ') . "f.type NOT IN ('" . implode("', '", $img_types) . "')";
}
else
{
$do_not_query_total_files = false;
}
@@ -404,3 +413,111 @@ else
$page_nums = $Pager->print_nums($page_action);
$current_page = $Pager->getCurrentPage();
}
elseif ($current_smt == 'delete_by_extension')
{
if (intval($userinfo['founder']) !== 1)
{
kleeja_admin_err($lang['HV_NOT_PRVLG_ACCESS']);
exit;
}
if (ig('fetch_ext_files'))
{
$query = [
'SELECT' => 'id',
'FROM' => $dbprefix . 'files',
'WHERE' => 'type = \'' . g('fetch_ext_files') . '\''
];
$SQL->build($query);
echo $SQL->num_rows();
exit;
}
if (ip('delete_files'))
{
$ext = p('selected_extnsion');
$query = [
'SELECT' => 'id, name, type, size, user',
'FROM' => $dbprefix . 'files',
'WHERE' => 'type = \'' . $ext . '\''
];
$result = $SQL->build($query);
$deleted_files = [];
$fileSizes = 0;
if ($SQL->num_rows())
{
while ($file = $SQL->fetch_array($result))
{
$fileLocation = PATH . 'uploads/' . $file['name'];
$thumbFileLocation = PATH . 'uploads/thumbs/' . $file['name'];
if (is_file($fileLocation))
{
kleeja_unlink($fileLocation);
}
if (is_file($thumbFileLocation))
{
kleeja_unlink($thumbFileLocation);
}
$fileSizes += $file['size'];
$deleted_files[] = $file['id'];
//Subtract size from storage of the user
if ($file['user'] != -1)
{
$SQL->query("UPDATE {$dbprefix}users SET storage_size=storage_size-" . $file['size'] . ' WHERE id=' . $file['user']);
}
}
if (($deletedFileCount = count($deleted_files)) <= 1)
{
$SQL->query("delete from {$dbprefix}files where id = '$deleted_files[0]'");
}
else
{
$SQL->query("delete from {$dbprefix}files where id in (" . implode(',', $deleted_files) . ')');
}
$update_stats = "update {$dbprefix}stats set " . (in_array($ext, ['png','gif','jpg','jpeg', 'bmp']) ? 'imgs = imgs-' . $deletedFileCount : 'files = files-' . $deletedFileCount)
. ", sizes = sizes-{$fileSizes}";
$SQL->query($update_stats);
}
$SQL->freeresult($result);
kleeja_admin_info($lang['ADMIN_DELETE_FILE_OK'], true, '', true, $action);
exit;
}
$available_extensions = [];
$query = [
'SELECT' => 'DISTINCT type',
'FROM' => $dbprefix . 'files'
];
$SQL->build($query);
while ($ext = $SQL->fetch())
{
$available_extensions[] = $ext;
}
$no_results = count($available_extensions) == 0;
}
if (intval($userinfo['founder']) == 1)
{
$go_menu = [
'delete_by_extension' => ['name'=> $lang['DEL_BY_EXT'], 'link'=> basename(ADMIN_PATH) . '?cp=c_files&amp;smt=delete_by_extension', 'goto'=>'delete_by_extension', 'current'=> $current_smt == 'delete_by_extension'],
];
}

View File

@@ -63,6 +63,7 @@ if (ip('submit'))
{
//delete from folder ..
@kleeja_unlink(PATH . $row['folder'] . '/' . $row['name']);
//delete thumb
if (file_exists(PATH . $row['folder'] . '/thumbs/' . $row['name']))
{
@@ -71,6 +72,12 @@ if (ip('submit'))
$ids[] = $row['id'];
$num++;
$sizes += $row['size'];
//Subtract size from storage of the user
if ($row['user'] != -1)
{
$SQL->query("UPDATE {$dbprefix}users SET storage_size=storage_size-" . $row['size'] . ' WHERE id=' . $row['user']);
}
}
$SQL->freeresult($result);

View File

@@ -85,7 +85,7 @@ if ($nums_rows > 0)
'id' => $row['id'],
'name' => $row['name'],
'mail' => $row['mail'],
'text' => htmlspecialchars($row['text']),
'text' => $row['text'],
'human_time' => kleeja_date($row['time']),
'time' => kleeja_date($row['time'], false),
'ip' => $row['ip'],
@@ -156,7 +156,6 @@ $page_nums = $Pager->print_nums(basename(ADMIN_PATH) . '?cp=' . basename
if (ip('submit'))
{
$text = ($SQL->affected() ? $lang['CALLS_UPDATED'] : $lang['NO_UP_CHANGE_S']);
$text .= '<script type="text/javascript"> setTimeout("get_kleeja_link(\'' . $action . '\'); check_msg_and_reports();", 2000);</script>' . "\n";
kleeja_admin_info($text, true, '', true, $action);
}

View File

@@ -155,7 +155,6 @@ $page_nums = $Pager->print_nums(basename(ADMIN_PATH) . '?cp=' . basenam
if (ip('submit'))
{
$text = ($SQL->affected() ? $lang['REPORTS_UPDATED'] : $lang['NO_UP_CHANGE_S']);
$text .= '<script type="text/javascript"> setTimeout("get_kleeja_link(\'' . $action . '\'); check_msg_and_reports();", 2000);</script>' . "\n";
kleeja_admin_info($text, true, '', true, $action);
}

File diff suppressed because it is too large Load Diff

View File

@@ -53,7 +53,7 @@ if (ip('search_file'))
//delete all searches greater than 3 days
$query_del = [
'DELETE' => "{$dbprefix}filters",
'WHERE' => "filter_type='file_search' AND filter_user=" . $userinfo['id'] . " AND filter_time > " . (time() - 3600 * 24 * 3)
'WHERE' => "filter_type='file_search' AND filter_user=" . $userinfo['id'] . ' AND filter_time > ' . (time() - 3600 * 24 * 3)
];
$SQL->build($query_del);
@@ -96,10 +96,10 @@ if (ip('search_user'))
//delete all searches greater than 3 days
$query_del = [
'DELETE' => "{$dbprefix}filters",
'WHERE' => "filter_type='user_search' AND filter_user=" . $userinfo['id'] . " AND filter_time > " . (time() - 3600 * 24 * 3)
'WHERE' => "filter_type='user_search' AND filter_user=" . $userinfo['id'] . ' AND filter_time > ' . (time() - 3600 * 24 * 3)
];
$SQL->build($query_del);
$SQL->build($query_del);
//add as a user_search filter

View File

@@ -79,7 +79,7 @@ switch ($case):
continue;
}
if($case == 'check' && $row['plg_disabled'] == 1)
if ($case == 'check' && $row['plg_disabled'] == 1)
{
continue;
}
@@ -90,13 +90,13 @@ switch ($case):
$installed_plugins[$row['plg_name']]['icon'] = file_exists(
PATH . KLEEJA_PLUGINS_FOLDER . '/' . $row['plg_name'] . '/icon.png'
)
)
? PATH . KLEEJA_PLUGINS_FOLDER . '/' . $row['plg_name'] . '/icon.png'
: $STYLE_PATH_ADMIN . 'images/plugin.png';
$installed_plugins[$row['plg_name']]['has_settings_page'] = ! empty(
$installed_plugins[$row['plg_name']]['extra_info']['settings_page']
) && ! preg_match('/^https?:\/\//', $installed_plugins[$row['plg_name']]['extra_info']['settings_page']);
) && ! preg_match('/^https?:\/\//', $installed_plugins[$row['plg_name']]['extra_info']['settings_page']);
foreach (['plugin_title', 'plugin_description'] as $localized_info)
@@ -197,7 +197,7 @@ switch ($case):
if ($case == 'store' && (in_array($plugin_info['name'], $available_plugins_names) ||
! empty($installed_plugins[$plugin_info['name']]))
) {
) {
continue;
}
@@ -233,8 +233,9 @@ switch ($case):
$store_plugins_count = sizeof($store_plugins);
break;
//
//upload a plugin
//upload a plugin
//
case 'upload':
$ERRORS = [];
@@ -291,8 +292,9 @@ switch ($case):
}
break;
//
//install a plugin
//install a plugin
//
case 'install':
@@ -369,12 +371,12 @@ switch ($case):
if (version_compare(KLEEJA_VERSION, $plugin_info['plugin_kleeja_version_min'], '<'))
{
kleeja_admin_info(
$lang['PACKAGE_N_CMPT_KLJ'] . '<br>k:' . KLEEJA_VERSION . '|<|p.min:' . $plugin_info['plugin_kleeja_version_min'],
true,
'',
true,
ADMIN_PATH . '?cp=' . basename(__FILE__, '.php')
);
$lang['PACKAGE_N_CMPT_KLJ'] . '<br>k:' . KLEEJA_VERSION . '|<|p.min:' . $plugin_info['plugin_kleeja_version_min'],
true,
'',
true,
ADMIN_PATH . '?cp=' . basename(__FILE__, '.php')
);
exit;
}
@@ -435,8 +437,9 @@ switch ($case):
}
break;
//
//uninstall a plugin
//uninstall a plugin
//
case 'uninstall':
@@ -516,8 +519,9 @@ switch ($case):
}
break;
//
// disable a plugin
// disable a plugin
//
case 'disable':
case 'enable':
@@ -639,7 +643,7 @@ switch ($case):
if (
version_compare(strtolower($store_plugins[$plugin_name]['kj_min_version']), KLEEJA_VERSION, '<=')
&& version_compare(strtolower($store_plugins[$plugin_name]['kj_max_version']), KLEEJA_VERSION, '>=')
) {
) {
$plugin_name_link = $store_plugins[$plugin_name]['url'];
$plugin_archive = FetchFile::make($plugin_name_link)
@@ -657,9 +661,6 @@ switch ($case):
{
if ($zip->extractTo(PATH . KLEEJA_PLUGINS_FOLDER))
{
// we dont need the zip file anymore
kleeja_unlink(PATH . 'cache/' . $plugin_name . '.zip');
// uploaded plugin's archive has different name, so we change it
rename(
PATH . KLEEJA_PLUGINS_FOLDER . '/' . trim($zip->getNameIndex(0), '/'),
@@ -668,6 +669,9 @@ switch ($case):
$zip->close();
// we dont need the zip file anymore
kleeja_unlink(PATH . 'cache/' . $plugin_name . '.zip');
// download or update msg
$adminAjaxContent = '1:::' . sprintf($lang[$is_update ? 'ITEM_UPDATED' : 'ITEM_DOWNLOADED'], $plugin_name);

View File

@@ -41,7 +41,7 @@ $result = $SQL->build($query);
$current_ban_data = $SQL->fetch_array($result);
$SQL->freeresult($result);
$banned_items = explode('|', $current_ban_data['ban']);
$banned_items = ! empty($current_ban_data['ban']) ? explode('|', $current_ban_data['ban']) : [];
$show_message = false;
@@ -101,6 +101,6 @@ if ($update_ban_content)
}
}
array_walk($banned_items, function (&$value, &$key) {
array_walk($banned_items, function (&$value, $key) {
$value = ['content' => $value, 'del_key' => md5($value), 'id' => $key+1];
});

View File

@@ -50,61 +50,61 @@ if (ip('newstyle'))
}
switch ($case):
default:
case 'local':
case 'store':
default:
case 'local':
case 'store':
//get styles
$available_styles = [];
//get styles
$available_styles = [];
if ($dh = @opendir(PATH . 'styles'))
{
while (false !== ($folder_name = readdir($dh)))
if ($dh = @opendir(PATH . 'styles'))
{
if (is_dir(PATH . 'styles/' . $folder_name) && preg_match('/[a-z0-9_.]{3,}/', $folder_name))
while (false !== ($folder_name = readdir($dh)))
{
//info
$style_info_arr = [
'name' => $folder_name,
'desc' => '',
'copyright' => '',
'version' => ''
];
if (($style_info = kleeja_style_info($folder_name)) != false)
if (is_dir(PATH . 'styles/' . $folder_name) && preg_match('/[a-z0-9_.]{3,}/', $folder_name))
{
foreach (['name', 'desc', 'copyright', 'version'] as $InfoKey)
//info
$style_info_arr = [
'name' => $folder_name,
'desc' => '',
'copyright' => '',
'version' => ''
];
if (($style_info = kleeja_style_info($folder_name)) != false)
{
if (array_key_exists($InfoKey, $style_info))
foreach (['name', 'desc', 'copyright', 'version'] as $InfoKey)
{
if (is_array($style_info[$InfoKey]))
if (array_key_exists($InfoKey, $style_info))
{
$style_info_arr[$InfoKey] = ! empty($style_info[$InfoKey][$config['language']])
? htmlspecialchars($style_info[$InfoKey][$config['language']])
: htmlspecialchars($style_info[$InfoKey]['en']);
}
else
{
$style_info_arr[$InfoKey] = htmlspecialchars($style_info[$InfoKey]);
if (is_array($style_info[$InfoKey]))
{
$style_info_arr[$InfoKey] = ! empty($style_info[$InfoKey][$config['language']])
? htmlspecialchars($style_info[$InfoKey][$config['language']])
: htmlspecialchars($style_info[$InfoKey]['en']);
}
else
{
$style_info_arr[$InfoKey] = htmlspecialchars($style_info[$InfoKey]);
}
}
}
}
$available_styles[$folder_name] = [
'name' => $folder_name,
'is_default' => $config['style'] == $folder_name ? true : false,
'link_mk_default' => basename(ADMIN_PATH) . '?cp=' . basename(__file__, '.php') . '&amp;style_choose=' . $folder_name,
'icon' => file_exists(PATH . 'styles/' . $folder_name . '/screenshot.png')
? PATH . 'styles/' . $folder_name . '/screenshot.png'
: $STYLE_PATH_ADMIN . 'images/style.png',
'info' => $style_info_arr
];
}
$available_styles[$folder_name] = [
'name' => $folder_name,
'is_default' => $config['style'] == $folder_name ? true : false,
'link_mk_default' => basename(ADMIN_PATH) . '?cp=' . basename(__file__, '.php') . '&amp;style_choose=' . $folder_name,
'icon' => file_exists(PATH . 'styles/' . $folder_name . '/screenshot.png')
? PATH . 'styles/' . $folder_name . '/screenshot.png'
: $STYLE_PATH_ADMIN . 'images/style.png',
'info' => $style_info_arr
];
}
}
@closedir($dh);
}
@closedir($dh);
}
//do not proceed if not store case
if (! in_array($case, ['store', 'check']))
@@ -174,142 +174,142 @@ case 'store':
$store_styles_count = sizeof($store_styles);
break;
break;
case 'select':
case 'select':
$style_name = preg_replace('/[^a-z0-9_\-\.]/i', '', g('style'));
$style_name = preg_replace('/[^a-z0-9_\-\.]/i', '', g('style'));
//if empty, let's ignore it
if (empty($style_name))
{
redirect(basename(ADMIN_PATH) . '?cp=' . basename(__file__, '.php'));
}
//
//check if this style depend on other style and
//check kleeja version that required by this style
//
if (($style_info = kleeja_style_info($style_name)) != false)
{
if (isset($style_info['depend_on']) && ! is_dir(PATH . 'styles/' . $style_info['depend_on']))
//if empty, let's ignore it
if (empty($style_name))
{
kleeja_admin_err(sprintf($lang['DEPEND_ON_NO_STYLE_ERR'], $style_info['depend_on']));
redirect(basename(ADMIN_PATH) . '?cp=' . basename(__file__, '.php'));
}
if (isset($style_info['kleeja_version']) && version_compare(strtolower($style_info['kleeja_version']), strtolower(KLEEJA_VERSION), '>'))
//
//check if this style depend on other style and
//check kleeja version that required by this style
//
if (($style_info = kleeja_style_info($style_name)) != false)
{
kleeja_admin_err(sprintf($lang['KLJ_VER_NO_STYLE_ERR'], $style_info['kleeja_version']));
}
//is this style require some plugins to be installed
if (isset($style_info['plugins_required']))
{
$plugins_required = explode(',', $style_info['plugins_required']);
$plugins_required = array_map('trim', $plugins_required);
$query = [
'SELECT' => 'plg_name, plg_disabled',
'FROM' => "{$dbprefix}plugins",
];
$result = $SQL->build($query);
if ($SQL->num_rows($result) != 0)
if (isset($style_info['depend_on']) && ! is_dir(PATH . 'styles/' . $style_info['depend_on']))
{
$plugins_required = array_flip($plugins_required);
while ($row = $SQL->fetch_array($result))
kleeja_admin_err(sprintf($lang['DEPEND_ON_NO_STYLE_ERR'], $style_info['depend_on']));
}
if (isset($style_info['kleeja_version']) && version_compare(strtolower($style_info['kleeja_version']), strtolower(KLEEJA_VERSION), '>'))
{
kleeja_admin_err(sprintf($lang['KLJ_VER_NO_STYLE_ERR'], $style_info['kleeja_version']));
}
//is this style require some plugins to be installed
if (isset($style_info['plugins_required']))
{
$plugins_required = explode(',', $style_info['plugins_required']);
$plugins_required = array_map('trim', $plugins_required);
$query = [
'SELECT' => 'plg_name, plg_disabled',
'FROM' => "{$dbprefix}plugins",
];
$result = $SQL->build($query);
if ($SQL->num_rows($result) != 0)
{
if (in_array($row['plg_name'], $plugins_required) and $row['plg_disabled'] != 1)
$plugins_required = array_flip($plugins_required);
while ($row = $SQL->fetch_array($result))
{
unset($plugins_required[$row['plg_name']]);
if (in_array($row['plg_name'], $plugins_required) and $row['plg_disabled'] != 1)
{
unset($plugins_required[$row['plg_name']]);
}
}
}
}
$SQL->freeresult($result);
$SQL->freeresult($result);
$plugins_required = array_flip($plugins_required);
$plugins_required = array_flip($plugins_required);
if (sizeof($plugins_required))
{
kleeja_admin_err(sprintf($lang['PLUGINS_REQ_NO_STYLE_ERR'], implode(', ', $plugins_required)));
if (sizeof($plugins_required))
{
kleeja_admin_err(sprintf($lang['PLUGINS_REQ_NO_STYLE_ERR'], implode(', ', $plugins_required)));
}
}
}
}
//make it as default
update_config('style', $style_name);
update_config('style_depend_on', isset($style_info['depend_on']) ? $style_info['depend_on'] : '');
//make it as default
update_config('style', $style_name);
update_config('style_depend_on', isset($style_info['depend_on']) ? $style_info['depend_on'] : '');
//delete all cache to get new style
delete_cache('', true);
//delete all cache to get new style
delete_cache('', true);
//show msg
kleeja_admin_info(sprintf($lang['STYLE_NOW_IS_DEFAULT'], $style_name), $action);
//show msg
kleeja_admin_info(sprintf($lang['STYLE_NOW_IS_DEFAULT'], $style_name), $action);
break;
break;
case 'upload':
case 'upload':
if (intval($userinfo['founder']) !== 1)
{
$ERRORS[] = $lang['HV_NOT_PRVLG_ACCESS'];
}
$ERRORS = [];
//is uploaded?
if (empty($_FILES['style_file']['tmp_name']))
{
$ERRORS[] = $lang['CHOSE_F'];
}
//extract it to plugins folder
if (! sizeof($ERRORS))
{
if (class_exists('ZipArchive'))
if (intval($userinfo['founder']) !== 1)
{
$zip = new ZipArchive;
$ERRORS[] = $lang['HV_NOT_PRVLG_ACCESS'];
}
if ($zip->open($_FILES['style_file']['tmp_name']) === true)
$ERRORS = [];
//is uploaded?
if (empty($_FILES['style_file']['tmp_name']))
{
$ERRORS[] = $lang['CHOSE_F'];
}
//extract it to plugins folder
if (! sizeof($ERRORS))
{
if (class_exists('ZipArchive'))
{
if (! $zip->extractTo(PATH . 'styles'))
$zip = new ZipArchive;
if ($zip->open($_FILES['style_file']['tmp_name']) === true)
{
$ERRORS[] = sprintf($lang['EXTRACT_ZIP_FAILED'], 'styles');
if (! $zip->extractTo(PATH . 'styles'))
{
$ERRORS[] = sprintf($lang['EXTRACT_ZIP_FAILED'], 'styles');
}
$zip->close();
}
else
{
$ERRORS[] = sprintf($lang['EXTRACT_ZIP_FAILED'], 'styles');
}
$zip->close();
}
else
{
$ERRORS[] = sprintf($lang['EXTRACT_ZIP_FAILED'], 'styles');
$ERRORS[] = $lang['NO_ZIP_ARCHIVE'];
}
}
if (! empty($_FILES['style_file']['tmp_name']))
{
@unlink($_FILES['style_file']['tmp_name']);
}
if (! sizeof($ERRORS))
{
kleeja_admin_info($lang['NO_PROBLEM_AFTER_ZIP'], true, '', true, $action);
}
else
{
$ERRORS[] = $lang['NO_ZIP_ARCHIVE'];
kleeja_admin_err('- ' . implode('<br>- ', $ERRORS), $action);
}
}
if (! empty($_FILES['style_file']['tmp_name']))
{
@unlink($_FILES['style_file']['tmp_name']);
}
if (! sizeof($ERRORS))
{
kleeja_admin_info($lang['NO_PROBLEM_AFTER_ZIP'], true, '', true, $action);
}
else
{
kleeja_admin_err('- ' . implode('<br>- ', $ERRORS), $action);
}
break;
break;
case 'dfolder':
@@ -341,160 +341,160 @@ case 'upload':
kleeja_admin_err($lang['ERROR_TRY_AGAIN'], $action);
break;
break;
case 'download':
case 'download':
if (intval($userinfo['founder']) !== 1)
{
header('HTTP/1.0 401 Unauthorized');
kleeja_admin_err($lang['HV_NOT_PRVLG_ACCESS']);
}
$style_name = g('style');
$is_update = false;
if (! is_writable(PATH . 'styles'))
{
@chmod(PATH . 'styles', K_DIR_CHMOD);
}
//if style exists before, then trigger update action. rename folder to rollback in case of failure
if (file_exists(PATH . 'styles/' . $style_name))
{
$is_update = true;
if (! rename(
PATH . 'styles/' . $style_name,
PATH . 'styles/' . $style_name . '_backup'
))
if (intval($userinfo['founder']) !== 1)
{
if (file_exists(PATH . 'styles/' . $style_name))
{
kleeja_unlink(PATH . 'styles/' . $style_name);
}
}
}
// plugins avilable in kleeja store
$store_link = 'https://raw.githubusercontent.com/kleeja-official/store-catalog/master/catalog.json';
$catalog_styles = FetchFile::make($store_link)->get();
if ($catalog_styles)
{
$catalog_styles = json_decode($catalog_styles, true);
$store_styles = [];
// make an arry for all plugins in kleeja store that not included in our server
foreach ($catalog_styles as $style_info)
{
if ($style_info['type'] != 'style')
{
continue;
}
$store_styles[$style_info['name']] = [
'name' => $style_info['name'] ,
'plg_version' => $style_info['file']['version'] ,
'url' => $style_info['file']['url'] ,
'kj_min_version' => $style_info['kleeja_version']['min'] ,
'kj_max_version' => $style_info['kleeja_version']['max'] ,
];
header('HTTP/1.0 401 Unauthorized');
kleeja_admin_err($lang['HV_NOT_PRVLG_ACCESS']);
}
// this style is hosted in our store
if (isset($store_styles[$style_name]))
$style_name = g('style');
$is_update = false;
if (! is_writable(PATH . 'styles'))
{
// check if the version of the plugin is compatible with our kleeja version or not
if (
version_compare(strtolower($store_styles[$style_name]['kj_min_version']), KLEEJA_VERSION, '<=')
&& version_compare(strtolower($store_styles[$style_name]['kj_max_version']), KLEEJA_VERSION, '>=')
) {
$style_name_link = $store_styles[$style_name]['url'];
@chmod(PATH . 'styles', K_DIR_CHMOD);
}
$style_archive = FetchFile::make($style_name_link)
->setDestinationPath(PATH . 'cache/' . $style_name . '.zip')
->isBinaryFile(true)
->get();
//if style exists before, then trigger update action. rename folder to rollback in case of failure
if (file_exists(PATH . 'styles/' . $style_name))
{
$is_update = true;
if ($style_archive)
if (! rename(
PATH . 'styles/' . $style_name,
PATH . 'styles/' . $style_name . '_backup'
))
{
if (file_exists(PATH . 'styles/' . $style_name))
{
if (file_exists(PATH . 'cache/' . $style_name . '.zip'))
kleeja_unlink(PATH . 'styles/' . $style_name);
}
}
}
// plugins avilable in kleeja store
$store_link = 'https://raw.githubusercontent.com/kleeja-official/store-catalog/master/catalog.json';
$catalog_styles = FetchFile::make($store_link)->get();
if ($catalog_styles)
{
$catalog_styles = json_decode($catalog_styles, true);
$store_styles = [];
// make an arry for all plugins in kleeja store that not included in our server
foreach ($catalog_styles as $style_info)
{
if ($style_info['type'] != 'style')
{
continue;
}
$store_styles[$style_info['name']] = [
'name' => $style_info['name'] ,
'plg_version' => $style_info['file']['version'] ,
'url' => $style_info['file']['url'] ,
'kj_min_version' => $style_info['kleeja_version']['min'] ,
'kj_max_version' => $style_info['kleeja_version']['max'] ,
];
}
// this style is hosted in our store
if (isset($store_styles[$style_name]))
{
// check if the version of the plugin is compatible with our kleeja version or not
if (
version_compare(strtolower($store_styles[$style_name]['kj_min_version']), KLEEJA_VERSION, '<=')
&& version_compare(strtolower($store_styles[$style_name]['kj_max_version']), KLEEJA_VERSION, '>=')
) {
$style_name_link = $store_styles[$style_name]['url'];
$style_archive = FetchFile::make($style_name_link)
->setDestinationPath(PATH . 'cache/' . $style_name . '.zip')
->isBinaryFile(true)
->get();
if ($style_archive)
{
$zip = new ZipArchive();
if ($zip->open(PATH . 'cache/' . $style_name . '.zip') === true)
if (file_exists(PATH . 'cache/' . $style_name . '.zip'))
{
if ($zip->extractTo(PATH . 'styles'))
$zip = new ZipArchive();
if ($zip->open(PATH . 'cache/' . $style_name . '.zip') === true)
{
// we dont need the zip file anymore
kleeja_unlink(PATH . 'cache/' . $style_name . '.zip');
// uploaded style's archive has different name, so we change it
rename(
PATH . 'styles/' . trim($zip->getNameIndex(0), '/'),
PATH . 'styles/' . $style_name
);
$zip->close();
// download or update msg
$adminAjaxContent = '1:::' . sprintf($lang[$is_update ? 'ITEM_UPDATED' : 'ITEM_DOWNLOADED'], $style_name);
//in case of update, delete back up version
if (file_exists(PATH . 'styles/' . $style_name . '_backup'))
if ($zip->extractTo(PATH . 'styles'))
{
kleeja_unlink(PATH . 'styles/' . $style_name . '_backup');
// we dont need the zip file anymore
kleeja_unlink(PATH . 'cache/' . $style_name . '.zip');
// uploaded style's archive has different name, so we change it
rename(
PATH . 'styles/' . trim($zip->getNameIndex(0), '/'),
PATH . 'styles/' . $style_name
);
$zip->close();
// download or update msg
$adminAjaxContent = '1:::' . sprintf($lang[$is_update ? 'ITEM_UPDATED' : 'ITEM_DOWNLOADED'], $style_name);
//in case of update, delete back up version
if (file_exists(PATH . 'styles/' . $style_name . '_backup'))
{
kleeja_unlink(PATH . 'styles/' . $style_name . '_backup');
}
}
else
{
$adminAjaxContent = '1003:::' . sprintf($lang['EXTRACT_ZIP_FAILED'], PATH . 'styles');
}
}
else
{
$adminAjaxContent = '1003:::' . sprintf($lang['EXTRACT_ZIP_FAILED'], PATH . 'styles');
}
}
else
{
$adminAjaxContent = '1004:::' . $lang['DOWNLOADED_FILE_NOT_FOUND'];
}
}
else
{
$adminAjaxContent = '1004:::' . $lang['DOWNLOADED_FILE_NOT_FOUND'];
$adminAjaxContent = '1005:::' . $lang['STORE_SERVER_ERROR'];
}
}
else
{
$adminAjaxContent = '1005:::' . $lang['STORE_SERVER_ERROR'];
$adminAjaxContent = '1006:::' . $lang['PACKAGE_N_CMPT_KLJ'];
}
}
else
{
$adminAjaxContent = '1006:::' . $lang['PACKAGE_N_CMPT_KLJ'];
$adminAjaxContent = '1007:::' . sprintf($lang['PACKAGE_REMOTE_FILE_MISSING'], $style_name);
}
}
else
{
$adminAjaxContent = '1007:::' . sprintf($lang['PACKAGE_REMOTE_FILE_MISSING'], $style_name);
$adminAjaxContent = '1008:::' . $lang['STORE_SERVER_ERROR'];
}
}
else
{
$adminAjaxContent = '1008:::' . $lang['STORE_SERVER_ERROR'];
}
//in case of update failure, rollback to current plugin version
if (strpos($adminAjaxContent, '1:::') === false)
{
if (file_exists(PATH . 'styles/' . $style_name . '_backup'))
//in case of update failure, rollback to current plugin version
if (strpos($adminAjaxContent, '1:::') === false)
{
rename(
PATH . 'styles/' . $style_name . '_backup',
PATH . 'styles/' . $style_name
);
if (file_exists(PATH . 'styles/' . $style_name . '_backup'))
{
rename(
PATH . 'styles/' . $style_name . '_backup',
PATH . 'styles/' . $style_name
);
}
}
}
break;
break;
endswitch;

View File

@@ -54,12 +54,13 @@ if ($current_smt == 'check')
//get data from kleeja github repo
if (! ($version_data = $cache->get('kleeja_repo_version')))
{
$version_data = [];
$github_data = FetchFile::make(KLEEJA_VERSION_CHECK_LINK)->setTimeOut(100)->get();
if (! empty($github_data))
{
$latest_release = json_decode($github_data, true);
$version_data = null;
if (json_last_error() === JSON_ERROR_NONE)
{
@@ -103,7 +104,7 @@ if ($current_smt == 'check')
}
$data = [
'version_number' => $version_data['version'],
'version_number' => isset($version_data['version']) ? $version_data['version'] : null,
'last_check' => time()
];

View File

@@ -45,184 +45,183 @@ $text = '';
switch ($case):
default:
default:
// Get real number from database right now
$all_files = get_actual_stats('files');
$all_images = get_actual_stats('imgs');
$all_users = get_actual_stats('users');
$all_sizes = readable_size(get_actual_stats('sizes'));
// Get real number from database right now
$all_files = get_actual_stats('files');
$all_images = get_actual_stats('imgs');
$all_users = get_actual_stats('users');
$all_sizes = readable_size(get_actual_stats('sizes'));
//links
$del_cache_link = basename(ADMIN_PATH) . '?cp=r_repair&amp;case=clearc&amp;' . $GET_FORM_KEY;
$resync_files_link = $config['siteurl'] . 'go.php?go=resync&amp;case=sync_files';
$resync_images_link = $config['siteurl'] . 'go.php?go=resync&amp;case=sync_images';
$resync_users_link = basename(ADMIN_PATH) . '?cp=r_repair&amp;case=sync_users&amp;' . $GET_FORM_KEY;
$resync_sizes_link = basename(ADMIN_PATH) . '?cp=r_repair&amp;case=sync_sizes&amp;' . $GET_FORM_KEY;
$repair_tables_link = basename(ADMIN_PATH) . '?cp=r_repair&amp;case=tables&amp;' . $GET_FORM_KEY;
//links
$del_cache_link = basename(ADMIN_PATH) . '?cp=r_repair&amp;case=clearc&amp;' . $GET_FORM_KEY;
$resync_files_link = $config['siteurl'] . 'go.php?go=resync&amp;case=sync_files';
$resync_images_link = $config['siteurl'] . 'go.php?go=resync&amp;case=sync_images';
$resync_users_link = basename(ADMIN_PATH) . '?cp=r_repair&amp;case=sync_users&amp;' . $GET_FORM_KEY;
$resync_sizes_link = basename(ADMIN_PATH) . '?cp=r_repair&amp;case=sync_sizes&amp;' . $GET_FORM_KEY;
$repair_tables_link = basename(ADMIN_PATH) . '?cp=r_repair&amp;case=tables&amp;' . $GET_FORM_KEY;
$queue_cron_job_url = $config['siteurl'] . 'go.php?go=queue';
$queue_cron_job_url = $config['siteurl'] . 'go.php?go=queue';
$stylee = 'admin_repair';
$stylee = 'admin_repair';
break;
break;
//
//fix tables ..
//fix tables ..
//
case 'tables':
case 'tables':
$query = 'SHOW TABLE STATUS';
$result = $SQL->query($query);
$query = 'SHOW TABLE STATUS';
$result = $SQL->query($query);
while ($row=$SQL->fetch_array($result))
{
$queryf = 'REPAIR TABLE `' . $row['Name'] . '`';
$resultf = $SQL->query($queryf);
if ($resultf)
{
$text .= '<li>' . $lang['REPAIRE_TABLE'] . $row['Name'] . '</li>';
}
}
$SQL->freeresult($result);
$text .= '<script type="text/javascript"> setTimeout("get_kleeja_link(\'' . basename(ADMIN_PATH) . '?cp=r_repair' . '\');", 2000);</script>' . "\n";
$stylee = 'admin_info';
break;
//
//re-sync sizes ..
//
case 'sync_sizes':
$query_s = [
'SELECT' => 'size',
'FROM' => "{$dbprefix}files"
];
$result_s = $SQL->build($query_s);
$files_number = $files_sizes = 0;
while ($row=$SQL->fetch_array($result_s))
{
$files_number++;
$files_sizes = $files_sizes+$row['size'];
}
$SQL->freeresult($result_s);
$update_query = [
'UPDATE' => "{$dbprefix}stats",
'SET' => 'files=' . $files_number . ', sizes=' . $files_sizes
];
if ($SQL->build($update_query))
{
$text .= '<li>' . $lang['REPAIRE_F_STAT'] . '</li>';
}
delete_cache('data_stats');
$stylee = 'admin_info';
break;
//
//re-sync total users number ..
//
case 'sync_users':
$query_w = [
'SELECT' => 'name',
'FROM' => "{$dbprefix}users"
];
$result_w = $SQL->build($query_w);
$user_number = 0;
while ($row=$SQL->fetch_array($result_w))
{
$user_number++;
}
$SQL->freeresult($result_w);
$update_query = [
'UPDATE' => "{$dbprefix}stats",
'SET' => 'users=' . $user_number
];
$result = $SQL->build($update_query);
delete_cache('data_stats');
$text = sprintf($lang['SYNCING'], $lang['USERS_ST']);
$text .= '<script type="text/javascript"> setTimeout("get_kleeja_link(\'' . basename(ADMIN_PATH) . '?cp=r_repair' . '\');", 2000);</script>' . "\n";
$stylee = 'admin_info';
break;
//
//clear all cache ..
//
case 'clearc':
//clear cache
delete_cache('', true);
//show done, msg
$text .= '<li>' . $lang['REPAIRE_CACHE'] . '</li>';
$text .= '<script type="text/javascript"> setTimeout("get_kleeja_link(\'' . basename(ADMIN_PATH) . '?cp=r_repair' . '\');", 2000);</script>' . "\n";
$stylee = 'admin_info';
break;
//toggle admin start boxes
case 'toggle_start_box':
if (! kleeja_check_form_key_get('adm_start_actions', 3600))
{
header('HTTP/1.1 405 Method Not Allowed');
$adminAjaxContent = $lang['INVALID_FORM_KEY'];
}
else
{
$items = explode(':', $config['hidden_start_boxes']);
$items = array_filter($items);
$name = g('name');
$hide = g('toggle', 'int') == 1;
if (in_array($name, $items) && ! $hide)
while ($row=$SQL->fetch_array($result))
{
$new_items = array_diff($items, [$name]);
}
elseif ($hide)
{
$new_items = $items;
$new_items[] = $name;
$queryf = 'REPAIR TABLE `' . $row['Name'] . '`';
$resultf = $SQL->query($queryf);
if ($resultf)
{
$text .= '<li>' . $lang['REPAIRE_TABLE'] . $row['Name'] . '</li>';
}
}
if ($new_items != $items)
$SQL->freeresult($result);
$text .= '<script type="text/javascript"> setTimeout("get_kleeja_link(\'' . basename(ADMIN_PATH) . '?cp=r_repair' . '\');", 2000);</script>' . "\n";
$stylee = 'admin_info';
break;
//
//re-sync sizes ..
//
case 'sync_sizes':
$query_s = [
'SELECT' => 'size',
'FROM' => "{$dbprefix}files"
];
$result_s = $SQL->build($query_s);
$files_number = $files_sizes = 0;
while ($row=$SQL->fetch_array($result_s))
{
update_config('hidden_start_boxes', implode(':', $new_items));
$files_number++;
$files_sizes = $files_sizes+$row['size'];
}
$adminAjaxContent = $lang['CONFIGS_UPDATED'];
}
$SQL->freeresult($result_s);
break;
$update_query = [
'UPDATE' => "{$dbprefix}stats",
'SET' => 'files=' . $files_number . ', sizes=' . $files_sizes
];
if ($SQL->build($update_query))
{
$text .= '<li>' . $lang['REPAIRE_F_STAT'] . '</li>';
}
delete_cache('data_stats');
$stylee = 'admin_info';
break;
//
//re-sync total users number ..
//
case 'sync_users':
$query_w = [
'SELECT' => 'name',
'FROM' => "{$dbprefix}users"
];
$result_w = $SQL->build($query_w);
$user_number = 0;
while ($row=$SQL->fetch_array($result_w))
{
$user_number++;
}
$SQL->freeresult($result_w);
$update_query = [
'UPDATE' => "{$dbprefix}stats",
'SET' => 'users=' . $user_number
];
$result = $SQL->build($update_query);
delete_cache('data_stats');
$text = sprintf($lang['SYNCING'], $lang['USERS_ST']);
$text .= '<script type="text/javascript"> setTimeout("get_kleeja_link(\'' . basename(ADMIN_PATH) . '?cp=r_repair' . '\');", 2000);</script>' . "\n";
$stylee = 'admin_info';
break;
//
//clear all cache ..
//
case 'clearc':
//clear cache
delete_cache('', true);
//show done, msg
$text .= '<li>' . $lang['REPAIRE_CACHE'] . '</li>';
$text .= '<script type="text/javascript"> setTimeout("get_kleeja_link(\'' . basename(ADMIN_PATH) . '?cp=r_repair' . '\');", 2000);</script>' . "\n";
$stylee = 'admin_info';
break;
//toggle admin start boxes
case 'toggle_start_box':
if (! kleeja_check_form_key_get('adm_start_actions'))
{
header('HTTP/1.1 405 Method Not Allowed');
$adminAjaxContent = $lang['INVALID_FORM_KEY'];
}
else
{
$items = explode(':', $config['hidden_start_boxes']);
$new_items = $items = array_filter($items);
$name = g('name');
$hide = g('toggle', 'int') == 1;
if (in_array($name, $items) && ! $hide)
{
$new_items = array_diff($items, [$name]);
}
elseif ($hide)
{
$new_items[] = $name;
}
if ($new_items != $items)
{
update_config('hidden_start_boxes', implode(':', $new_items));
}
$adminAjaxContent = $lang['CONFIGS_UPDATED'];
}
break;
endswitch;

View File

@@ -84,9 +84,10 @@ if (! file_exists(PATH . '.htaccess') && (int) $config['mod_writer'] == 1)
}
//updating
$v = @unserialize($config['new_version']);
$v = @unserialize($config['new_version']);
$new_version = isset($v['version_number']) ? $v['version_number'] : '';
if (version_compare(strtolower(KLEEJA_VERSION), strtolower($v['version_number']), '<'))
if (version_compare(strtolower(KLEEJA_VERSION), strtolower($new_version), '<'))
{
$ADM_NOTIFICATIONS['up_ver_klj'] = [
'id' => 'up_ver_klj',//this not so important row
@@ -196,12 +197,12 @@ if (function_exists('fileperms') && ! defined('KLEEJA_NO_CONFIG_CHECK') && strto
}
//no htaccess
if (! file_exists(PATH . $config['foldername'] . '/.htaccess'))
if (is_dir(PATH . $config['foldername']) && ! file_exists(PATH . $config['foldername'] . '/.htaccess'))
{
$ADM_NOTIFICATIONS['htaccess_u'] = ['id' => 'htaccess_u', 'msg_type'=> 'error', 'title'=> $lang['WARN'], 'msg'=> sprintf($lang['NO_HTACCESS_DIR_UP'], $config['foldername'])];
}
if (! file_exists(PATH . $config['foldername'] . '/thumbs/.htaccess'))
if (is_dir(PATH . $config['foldername']) && ! file_exists(PATH . $config['foldername'] . '/thumbs/.htaccess'))
{
$ADM_NOTIFICATIONS['htaccess_t'] = ['id' => 'htaccess_t', 'msg_type'=> 'error', 'title'=> $lang['WARN'], 'msg'=> sprintf($lang['NO_HTACCESS_DIR_UP_THUMB'], $config['foldername'] . '/thumbs')];
}
@@ -214,7 +215,7 @@ if ((int) $config['klj_clean_files_from'] > 0)
}
//if there is no thumbs folder
if (! file_exists(PATH . $config['foldername'] . '/thumbs') && (int) $config['thumbs_imgs'] != 0)
if (is_dir(PATH . $config['foldername']) && ! file_exists(PATH . $config['foldername'] . '/thumbs') && (int) $config['thumbs_imgs'] != 0)
{
$ADM_NOTIFICATIONS['no_thumbs'] = ['id' => 'no_thumbs', 'msg_type'=> 'info', 'title'=> $lang['NOTE'], 'msg'=> sprintf($lang['NO_THUMB_FOLDER'], PATH . $config['foldername'] . '/thumbs')];
}
@@ -265,9 +266,11 @@ $hurry_groups_list .= '<option value="' . $config['default_group'] . '">' . $lan
foreach ($d_groups as $id=>$ddt)
{
$hurry_groups_list .= '<option value="' . $id . '">' .
str_replace(['{lang.ADMINS}', '{lang.USERS}', '{lang.GUESTS}'],
[$lang['ADMINS'], $lang['USERS'], $lang['GUESTS']],
$d_groups[$id]['data']['group_name']) .
str_replace(
['{lang.ADMINS}', '{lang.USERS}', '{lang.GUESTS}'],
[$lang['ADMINS'], $lang['USERS'], $lang['GUESTS']],
$d_groups[$id]['data']['group_name']
) .
'</option>';
}

View File

@@ -42,20 +42,13 @@ class cache
include PATH . 'cache/' . $name . '.php';
return empty($data) ? false : $data;
}
else
{
return false;
}
return false;
}
public function exists($name)
public function exists($name): bool
{
$name = preg_replace('![^a-z0-9_]!', '_', $name);
if (file_exists(PATH . 'cache/' . $name . '.php'))
{
return true;
}
return file_exists(PATH . 'cache/' . $name . '.php');
}
public function save($name, $data, $time = 86400)
@@ -64,17 +57,23 @@ class cache
$data_for_save = '<?' . 'php' . "\n";
$data_for_save .= '//Cache file, generated for Kleeja at ' . gmdate('d-m-Y h:i A') . "\n\n";
$data_for_save .= '//No direct opening' . "\n";
$data_for_save .= '(!defined("IN_COMMON") ? exit("hacking attemp!") : null);' . "\n\n";
$data_for_save .= '(!defined("IN_COMMON") ? exit("hacking attempt!") : null);' . "\n\n";
$data_for_save .= '//return false after x time' . "\n";
$data_for_save .= 'if(time() > ' . (time() + $time) . ') return false;' . "\n\n";
$data_for_save .= '$data = ' . var_export($data, true) . ";\n\n//end of cache";
if ($fd = @fopen(PATH . 'cache/' . $name . '.php', 'w'))
try
{
@flock($fd, LOCK_EX); // exlusive look
@fwrite($fd, $data_for_save);
@flock($fd, LOCK_UN);
@fclose($fd);
$fd = fopen(PATH . 'cache/' . $name . '.php', 'w');
flock($fd, LOCK_EX); // exclusive look
fwrite($fd, $data_for_save);
flock($fd, LOCK_UN);
fclose($fd);
return true;
}
catch (Exception $e)
{
return false;
}
}
@@ -113,7 +112,7 @@ if (! ($config = $cache->get('data_config')))
is_array($plugin_run_result = Plugins::getInstance()->run('qr_select_config_cache', get_defined_vars())) ? extract($plugin_run_result) : null; //run hook
$result = $SQL->build($query);
$config = [];
while ($row=$SQL->fetch_array($result))
{
$config[$row['name']] = $row['value'];
@@ -130,6 +129,8 @@ if (! ($config = $cache->get('data_config')))
if (! ($olang = $cache->get('data_lang' . $config['language'])))
{
$olang = [];
$query = [
'SELECT' => 'l.word, l.trans',
'FROM' => "{$dbprefix}lang l",

View File

@@ -45,6 +45,9 @@ function kleeja_cpatcha_image()
$width = 150;
$height = 25;
//Generate a random number of lines to make the image dirty
$lines = rand(3, 5);
//Create the image resource
$image = imagecreate($width, $height);
@@ -69,7 +72,7 @@ function kleeja_cpatcha_image()
// he search in the Linux fonts cache , but when you add './' he will know it's our font.
//
imagettftext($image, 16, $angle, rand(50, $x), $y+rand(1, 3), $white, dirname(__FILE__) . '/arial.ttf', $security_code);
//imagettftext ($image, 7, 0, $width-30, $height-4, $white,'./arial.ttf', 'Kleeja');
//imagettftext ($image, 7, 0, $width-30, $height-4, $white,'./arial.ttf', 'Kleeja');
}
else
{
@@ -78,13 +81,21 @@ function kleeja_cpatcha_image()
}
//Throw in some lines to make it a little bit harder for any bots to break
imagerectangle($image, 0, 0, $width-1, $height-1, $grey);
imageline($image, 0, $height/2, $width, $height/2, $grey);
imageline($image, $width/2, 0, $width/2, $height, $grey);
imagerectangle($image, 0, 0, $width-1, $height-1, $grey);
for ($i=0; $i<$lines; $i++)
{
imageline($image, rand(0, $width), rand(0, $height), rand(0, $width), rand(0, $height), $grey);
}
//Tell the browser what kind of file is come in
header('Content-Type: image/png');
//Tell the browser what kind of file is come in and prevent client side caching
header('Expires: Wed, 1 Jan 1997 00:00:00 GMT');
header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT');
header('Cache-Control: no-store, no-cache, must-revalidate');
header('Cache-Control: post-check=0, pre-check=0', false);
header('Pragma: no-cache');
header('Content-Type: image/png');
//Output the newly created image in jpeg format
imagepng($image);

View File

@@ -47,6 +47,7 @@ if (! file_exists(PATH . KLEEJA_CONFIG_FILE))
//there is a config
require_once PATH . KLEEJA_CONFIG_FILE;
$customadminpath = $customadminpath ?? 'admin';
//admin files path
@@ -58,10 +59,10 @@ error_reporting(defined('DEV_STAGE') ? E_ALL : E_ALL ^ E_NOTICE);
/**
* functions for start
* @param mixed $error_number
* @param mixed $error_string
* @param mixed $error_file
* @param mixed $error_line
* @param mixed $error_number
* @param mixed $error_string
* @param mixed $error_file
* @param mixed $error_line
*/
function kleeja_show_error($error_number, $error_string = '', $error_file = '', $error_line = '')
{
@@ -76,7 +77,7 @@ function kleeja_show_error($error_number, $error_string = '', $error_file = '',
kleeja_log('[' . $error_name . '] ' . basename($error_file) . ':' . $error_line . ' ' . $error_string);
}
break;
break;
default:
header('HTTP/1.1 503 Service Temporarily Unavailable');
@@ -86,7 +87,7 @@ function kleeja_show_error($error_number, $error_string = '', $error_file = '',
echo '.error {color: #333;background:#ffebe8;float:left;width:73%;text-align:left;margin-top:10px;border: 1px solid #dd3c10; padding: 10px;font-family:tahoma,arial;font-size: 12px;}' . "\n";
echo "</style>\n</head>\n<body>\n\t" . '<div class="error">' . "\n\n\t\t<h2>Kleeja error : </h2><br />" . "\n";
echo "\n\t\t<strong> [ " . $error_number . ':' . basename($error_file) . ':' . $error_line . ' ] </strong><br /><br />' . "\n\t\t" . $error_string . "\n\t";
echo "\n\t\t" . '<br /><br /><small>Visit <a href="http://kleeja.net/" title="kleeja">Kleeja</a> Website for more details.</small>' . "\n\t";
echo "\n\t\t" . '<br /><br /><small>Visit <a href="https://kleeja.net/" title="kleeja">Kleeja</a> Website for more details.</small>' . "\n\t";
echo "</div>\n</body>\n</html>";
global $SQL;
@@ -97,7 +98,7 @@ function kleeja_show_error($error_number, $error_string = '', $error_file = '',
exit;
break;
break;
}
}
set_error_handler('kleeja_show_error');
@@ -124,7 +125,7 @@ $starttm = get_microtime();
if (! is_bot() && PHP_SESSION_ACTIVE !== session_status() && ! headers_sent())
{
if(function_exists('ini_set'))
if (function_exists('ini_set'))
{
ini_set('session.use_cookies', 1);
ini_set('session.lazy_write', 1);
@@ -134,9 +135,12 @@ if (! is_bot() && PHP_SESSION_ACTIVE !== session_status() && ! headers_sent())
}
if(! session_start())
if (! session_start())
{
big_error('Session Error!', 'There is a problem with PHP session. We can not start it.');
// big_error is not defined yet, and the file *function_display.php* is not included yet
kleeja_show_error('', 'Session Error!', 'There is a problem with PHP session. We can not start it.');
exit;
}
}
@@ -144,7 +148,21 @@ if (! is_bot() && PHP_SESSION_ACTIVE !== session_status() && ! headers_sent())
//no enough data
if ((empty($dbname) || empty($dbuser)) && ($dbtype !== 'sqlite'))
{
header('Location: ./install/index.php');
$install_file_url = (defined('IN_ADMIN') ? '.' : '') . './install/index.php';
if (file_exists(PATH . '/install/index.php'))
{
header("Location: {$install_file_url}");
exit;
}
kleeja_show_error(
'',
'There is no (install) folder, and the config file is not correct',
'includes/common.php',
__LINE__
);
exit;
}
@@ -176,6 +194,34 @@ include PATH . 'includes/FetchFile.php';
if (defined('IN_ADMIN'))
{
$currentDirectoryPath = dirname($_SERVER['PHP_SELF']);
$currentDirectoryPathParts = explode('/', $currentDirectoryPath);
$currentDir = array_pop($currentDirectoryPathParts);
$adminDirErrorMsg = '';
if ($customadminpath == 'admin' && $currentDir != $customadminpath)
{
$adminDirErrorMsg = 'You are trying to access the admin area through a directory that is not configured. Please either revert to the default admin directory name, or see our documentation for customizing the admin directory.';
}
else
{
if ($currentDir != $customadminpath)
{
$adminDirErrorMsg = 'You are trying to access the admin area through a directory different from the one configured. Please refer to the Customize Administrator\'s Guide documentation for instructions on how to update it.';
}
else
{
if ($customadminpath != 'admin' && is_dir(PATH . 'admin'))
{
$adminDirErrorMsg = 'You are trying to access the admin area through a custom directory, but we also detected that there is a default directory \'admin\'. This may indicate that files from a recent update were uploaded to the default admin path location instead of the custom location, resulting in these files becoming outdated. Please make sure your custom admin folder contains the latest files, and delete the default admin directory to continue.';
}
}
}
if ($adminDirErrorMsg)
{
kleeja_show_error('', 'Critical Error', $adminDirErrorMsg);
}
include PATH . 'includes/functions_adm.php';
}
@@ -224,7 +270,7 @@ $config = array_merge($config, (array) $d_groups[$usrcp->group_id()]['configs'])
//admin path
define('ADMIN_PATH', rtrim($config['siteurl'], '/') . '/admin/index.php');
define('ADMIN_PATH', rtrim($config['siteurl'], '/') . '/' . $customadminpath . '/index.php');
//no tpl caching in dev stage
@@ -315,10 +361,10 @@ define('ACP_STYLE_NAME', 'Masmak');
$STYLE_PATH = $config['siteurl'] . 'styles/' . (trim($config['style_depend_on']) == '' ? $config['style'] : $config['style_depend_on']) . '/';
$THIS_STYLE_PATH = $config['siteurl'] . 'styles/' . $config['style'] . '/';
$THIS_STYLE_PATH_ABS = PATH . 'styles/' . $config['style'] . '/';
$STYLE_PATH_ADMIN = $config['siteurl'] . 'admin/' . (is_browser('mobile') || defined('IN_MOBILE') ? ACP_STYLE_NAME : ACP_STYLE_NAME) . '/';
$STYLE_PATH_ADMIN_ABS = PATH . 'admin/' . (is_browser('mobile') || defined('IN_MOBILE') ? ACP_STYLE_NAME . '/' : ACP_STYLE_NAME . '/');
$DEFAULT_PATH_ADMIN_ABS = PATH . 'admin/' . ACP_STYLE_NAME . '/';
$DEFAULT_PATH_ADMIN = $config['siteurl'] . 'admin/' . ACP_STYLE_NAME . '/';
$STYLE_PATH_ADMIN = $config['siteurl'] . $customadminpath . '/' . (is_browser('mobile') || defined('IN_MOBILE') ? ACP_STYLE_NAME : ACP_STYLE_NAME) . '/';
$STYLE_PATH_ADMIN_ABS = PATH . $customadminpath . '/' . (is_browser('mobile') || defined('IN_MOBILE') ? ACP_STYLE_NAME . '/' : ACP_STYLE_NAME . '/');
$DEFAULT_PATH_ADMIN_ABS = PATH . $customadminpath . '/' . ACP_STYLE_NAME . '/';
$DEFAULT_PATH_ADMIN = $config['siteurl'] . $customadminpath . '/' . ACP_STYLE_NAME . '/';
//get languge of common
@@ -334,10 +380,10 @@ if (isset($_GET['go']) && $_GET['go'] == 'login')
//install.php exists
if (
file_exists(PATH . 'install') &&
! defined('IN_ADMIN') &&
! defined('IN_LOGIN') &&
! defined('DEV_STAGE') &&
file_exists(PATH . 'install') &&
! defined('IN_ADMIN') &&
! defined('IN_LOGIN') &&
! defined('DEV_STAGE') &&
! (defined('IN_GO') && in_array(g('go'), ['queue'])) &&
! (defined('IN_UCP') && in_array(g('go'), ['captcha', 'login']))
) {
@@ -350,18 +396,18 @@ if (
$login_page = '';
if (
$config['siteclose'] == '1' &&
! user_can('enter_acp') &&
! defined('IN_LOGIN') &&
! defined('IN_ADMIN') &&
$config['siteclose'] == '1' &&
! user_can('enter_acp') &&
! defined('IN_LOGIN') &&
! defined('IN_ADMIN') &&
! (defined('IN_GO') && in_array(g('go'), ['queue'])) &&
! (defined('IN_UCP') && in_array(g('go'), ['captcha', 'login', 'register', 'logout']))
) {
) {
//if download, images ?
if (
(defined('IN_DOWNLOAD') && (ig('img') || ig('thmb') || ig('thmbf') || ig('imgf')))
|| g('go', 'str', '') == 'queue'
) {
) {
@$SQL->close();
$fullname = 'images/site_closed.jpg';
$filesize = filesize($fullname);

View File

@@ -25,7 +25,7 @@ function kleeja_detecting_bots()
global $SQL, $dbprefix, $config;
// get information ..
$agent = $SQL->escape($_SERVER['HTTP_USER_AGENT']);
$agent = $SQL->escape($_SERVER['HTTP_USER_AGENT'] ?? '');
$time = time();
//for stats
@@ -137,7 +137,7 @@ function get_ban()
/**
* Check if the given plugin installed ?
* @param $plugin_name
* @param $plugin_name
* @return bool
*/
function kleeja_plugin_exists($plugin_name)
@@ -211,7 +211,7 @@ function kleeja_get_page()
/**
* Fix email string to be UTF8
* @param $text
* @param $text
* @return string
*/
function _sm_mk_utf8($text)
@@ -250,11 +250,7 @@ function send_mail($to, $body, $subject, $fromAddress, $fromName, $bcc = '')
$body = str_replace(["\n", "\0"], ["\r\n", ''], $body);
// Change the line breaks used in the headers according to OS
if (strtoupper(substr(PHP_OS, 0, 3)) == 'MAC')
{
$headers = str_replace("\r\n", "\r", $headers);
}
elseif (strtoupper(substr(PHP_OS, 0, 3)) != 'WIN')
if (strtoupper(substr(PHP_OS, 0, 3)) != 'WIN' && version_compare(PHP_VERSION, '8.0.0', '<'))
{
$headers = str_replace("\r\n", "\n", $headers);
}
@@ -272,7 +268,6 @@ function send_mail($to, $body, $subject, $fromAddress, $fromName, $bcc = '')
*/
function delete_cache($name, $all=false)
{
//Those files are exceptions and not for deletion
$exceptions = ['.htaccess', 'index.html', 'php.ini', 'web.config'];
@@ -393,214 +388,7 @@ function kleeja_unlink($filePath, $cache_file = false)
*/
function get_mime_for_header($ext)
{
$mime_types = [
'323' => 'text/h323',
'rar' => 'application/x-rar-compressed',
'acx' => 'application/internet-property-stream',
'ai' => 'application/postscript',
'aif' => 'audio/x-aiff',
'aifc' => 'audio/x-aiff',
'aiff' => 'audio/x-aiff',
'asf' => 'video/x-ms-asf',
'asr' => 'video/x-ms-asf',
'asx' => 'video/x-ms-asf',
'au' => 'audio/basic',
'avi' => 'video/x-msvideo',
'axs' => 'application/olescript',
'bas' => 'text/plain',
'bcpio' => 'application/x-bcpio',
'bin' => 'application/octet-stream',
'bmp' => 'image/bmp', // this is not a good mime, but it work anyway
//"bmp" => "image/x-ms-bmp", # @see bugs.php.net/47359
'c' => 'text/plain',
'cat' => 'application/vnd.ms-pkiseccat',
'cdf' => 'application/x-cdf',
'cer' => 'application/x-x509-ca-cert',
'class' => 'application/octet-stream',
'clp' => 'application/x-msclip',
'cmx' => 'image/x-cmx',
'cod' => 'image/cis-cod',
'psd' => 'image/psd',
'cpio' => 'application/x-cpio',
'crd' => 'application/x-mscardfile',
'crl' => 'application/pkix-crl',
'crt' => 'application/x-x509-ca-cert',
'csh' => 'application/x-csh',
'css' => 'text/css',
'dcr' => 'application/x-director',
'der' => 'application/x-x509-ca-cert',
'dir' => 'application/x-director',
'dll' => 'application/x-msdownload',
'dms' => 'application/octet-stream',
'doc' => 'application/msword',
'dot' => 'application/msword',
'dvi' => 'application/x-dvi',
'dxr' => 'application/x-director',
'eps' => 'application/postscript',
'etx' => 'text/x-setext',
'evy' => 'application/envoy',
'exe' => 'application/octet-stream',
'fif' => 'application/fractals',
'flr' => 'x-world/x-vrml',
'gif' => 'image/gif',
'gtar' => 'application/x-gtar',
'gz' => 'application/x-gzip',
'h' => 'text/plain',
'hdf' => 'application/x-hdf',
'hlp' => 'application/winhlp',
'hqx' => 'application/mac-binhex40',
'hta' => 'application/hta',
'htc' => 'text/x-component',
'htm' => 'text/html',
'html' => 'text/html',
'htt' => 'text/webviewhtml',
'ico' => 'image/x-icon',
'ief' => 'image/ief',
'iii' => 'application/x-iphone',
'ins' => 'application/x-internet-signup',
'isp' => 'application/x-internet-signup',
'jfif' => 'image/pipeg',
'jpe' => 'image/jpeg',
'jpeg' => 'image/jpeg',
'jpg' => 'image/jpeg',
'png' => 'image/png',
'js' => 'application/x-javascript',
'latex' => 'application/x-latex',
'lha' => 'application/octet-stream',
'lsf' => 'video/x-la-asf',
'lsx' => 'video/x-la-asf',
'lzh' => 'application/octet-stream',
'm13' => 'application/x-msmediaview',
'm14' => 'application/x-msmediaview',
'm3u' => 'audio/x-mpegurl',
'man' => 'application/x-troff-man',
'mdb' => 'application/x-msaccess',
'me' => 'application/x-troff-me',
'mht' => 'message/rfc822',
'mhtml' => 'message/rfc822',
'mid' => 'audio/mid',
'mny' => 'application/x-msmoney',
'mov' => 'video/quicktime',
'movie' => 'video/x-sgi-movie',
'mp2' => 'video/mpeg',
'mp3' => 'audio/mpeg',
'mp4' => 'video/mp4',
'm4a' => 'audio/mp4',
'mpa' => 'video/mpeg',
'mpe' => 'video/mpeg',
'mpeg' => 'video/mpeg',
'mpg' => 'video/mpeg',
'amr' => 'audio/3gpp',
'mpp' => 'application/vnd.ms-project',
'mpv2' => 'video/mpeg',
'ms' => 'application/x-troff-ms',
'mvb' => 'application/x-msmediaview',
'nws' => 'message/rfc822',
'oda' => 'application/oda',
'p10' => 'application/pkcs10',
'p12' => 'application/x-pkcs12',
'p7b' => 'application/x-pkcs7-certificates',
'p7c' => 'application/x-pkcs7-mime',
'p7m' => 'application/x-pkcs7-mime',
'p7r' => 'application/x-pkcs7-certreqresp',
'p7s' => 'application/x-pkcs7-signature',
'pbm' => 'image/x-portable-bitmap',
'pdf' => 'application/pdf',
'pfx' => 'application/x-pkcs12',
'pgm' => 'image/x-portable-graymap',
'pko' => 'application/ynd.ms-pkipko',
'pma' => 'application/x-perfmon',
'pmc' => 'application/x-perfmon',
'pml' => 'application/x-perfmon',
'pmr' => 'application/x-perfmon',
'pmw' => 'application/x-perfmon',
'pnm' => 'image/x-portable-anymap',
'pot' => 'application/vnd.ms-powerpoint',
'ppm' => 'image/x-portable-pixmap',
'pps' => 'application/vnd.ms-powerpoint',
'ppt' => 'application/vnd.ms-powerpoint',
'prf' => 'application/pics-rules',
'ps' => 'application/postscript',
'pub' => 'application/x-mspublisher',
'qt' => 'video/quicktime',
'ra' => 'audio/x-pn-realaudio',
'ram' => 'audio/x-pn-realaudio',
'ras' => 'image/x-cmu-raster',
'rgb' => 'image/x-rgb',
'rmi' => 'audio/mid',
'roff' => 'application/x-troff',
'rtf' => 'application/rtf',
'rtx' => 'text/richtext',
'swf' => 'application/x-shockwave-flash',
'scd' => 'application/x-msschedule',
'sct' => 'text/scriptlet',
'setpay' => 'application/set-payment-initiation',
'setreg' => 'application/set-registration-initiation',
'sh' => 'application/x-sh',
'shar' => 'application/x-shar',
'sit' => 'application/x-stuffit',
'snd' => 'audio/basic',
'spc' => 'application/x-pkcs7-certificates',
'spl' => 'application/futuresplash',
'src' => 'application/x-wais-source',
'sst' => 'application/vnd.ms-pkicertstore',
'stl' => 'application/vnd.ms-pkistl',
'stm' => 'text/html',
'svg' => 'image/svg+xml',
'sv4cpio' => 'application/x-sv4cpio',
'sv4crc' => 'application/x-sv4crc',
't' => 'application/x-troff',
'tar' => 'application/x-tar',
'tcl' => 'application/x-tcl',
'tex' => 'application/x-tex',
'texi' => 'application/x-texinfo',
'texinfo' => 'application/x-texinfo',
'tgz' => 'application/x-compressed',
'tif' => 'image/tiff',
'tiff' => 'image/tiff',
'tr' => 'application/x-troff',
'trm' => 'application/x-msterminal',
'tsv' => 'text/tab-separated-values',
'txt' => 'text/plain',
'uls' => 'text/iuls',
'ustar' => 'application/x-ustar',
'vcf' => 'text/x-vcard',
'vrml' => 'x-world/x-vrml',
'wav' => 'audio/x-wav',
'wcm' => 'application/vnd.ms-works',
'wdb' => 'application/vnd.ms-works',
'wks' => 'application/vnd.ms-works',
'wmf' => 'application/x-msmetafile',
'wps' => 'application/vnd.ms-works',
'wri' => 'application/x-mswrite',
'wrl' => 'x-world/x-vrml',
'wrz' => 'x-world/x-vrml',
'xaf' => 'x-world/x-vrml',
'xbm' => 'image/x-xbitmap',
'xla' => 'application/vnd.ms-excel',
'xlc' => 'application/vnd.ms-excel',
'xlm' => 'application/vnd.ms-excel',
'xls' => 'application/vnd.ms-excel',
'xlt' => 'application/vnd.ms-excel',
'xlw' => 'application/vnd.ms-excel',
'xof' => 'x-world/x-vrml',
'xpm' => 'image/x-xpixmap',
'xwd' => 'image/x-xwindowdump',
'z' => 'application/x-compress',
'zip' => 'application/zip',
'3gpp' => 'video/3gpp',
'3gp' => 'video/3gpp',
'3gpp2' => 'video/3gpp2',
'3g2' => 'video/3gpp2',
'midi' => 'audio/midi',
'pmd' => 'application/x-pmd',
'jar' => 'application/java-archive',
'jad' => 'text/vnd.sun.j2me.app-descriptor',
'apk' => 'application/vnd.android.package-archive',
'mkv' => 'video/x-matroska',
'm3u' => 'text/plain',
//add more mime here
];
$mime_types = include __DIR__ . '/mime_types.php';
//return mime
$ext = strtolower($ext);
@@ -698,7 +486,7 @@ function get_config($name)
$result = $SQL->build($query);
$v = $SQL->fetch($result);
$return = $v['value'];
$return = isset($v['value']) ? $v['value'] : null;
is_array($plugin_run_result = Plugins::getInstance()->run('get_config_func', get_defined_vars())) ? extract($plugin_run_result) : null; //run hook
return $return;
@@ -766,7 +554,7 @@ function add_config($name, $value, $order = '0', $html = '', $type = '0', $plg_i
/**
* add an array of new configs
* @param $configs
* @param $configs
* @return bool
*/
function add_config_r($configs)
@@ -892,7 +680,7 @@ function delete_config($name)
//
//update words to lang
//
function update_olang($name, $lang = 'en', $value)
function update_olang($name, $lang = 'en', $value = '')
{
global $SQL, $dbprefix, $olang;
@@ -968,11 +756,17 @@ function delete_olang($words = '', $lang = 'en', $plg_id = 0)
if (! empty($lang))
{
$lang_sql = "lang_id = '" . $SQL->escape($lang) . "'";
if (is_array($lang))
{
$lang_sql = "(lang_id = '" . implode("' AND lang_id = '", $SQL->escape($lang)) . "')";
foreach ($lang as $index=>$current_lang)
{
$lang[$index] = $SQL->escape($lang[$index]);
}
$lang_sql = "(lang_id = '" . implode("' OR lang_id = '", $lang) . "')";
}
else
{
$lang_sql = "lang_id = '" . $SQL->escape($lang) . "'";
}
$delete_query['WHERE'] .= (empty($delete_query['WHERE']) ? '' : ' AND ') . $lang_sql;
@@ -1106,6 +900,7 @@ function klj_clean_old_files($from = 0)
{
@kleeja_unlink($row['folder'] . '/' . $row['name']);
}
//delete thumb
if (file_exists($row['folder'] . '/thumbs/' . $row['name']))
{
@@ -1309,8 +1104,8 @@ function kleeja_log($text)
/**
* Return the first and last seek of range to be flushed.
* @param string $range
* @param $fileSize
* @param string $range
* @param $fileSize
* @return array
*/
function kleeja_set_range($range, $fileSize)
@@ -1459,10 +1254,10 @@ function add_to_serve_rules($rules, $unique_id = '')
}
$current_serve_content = preg_replace(
'/return\s{0,4}\[/',
'return [' . PHP_EOL . $rules,
$current_serve_content
);
'/return\s{0,4}\[/',
'return [' . PHP_EOL . $rules,
$current_serve_content
);
if (! is_writable(PATH . 'plugins_rules.php'))
@@ -1491,7 +1286,7 @@ function remove_from_serve_rules($unique_id)
'/^#start_' . preg_quote($unique_id) . '.*' . '#end_' . preg_quote($unique_id) . '$/sm',
'',
$current_serve_content
);
);
if ($new_serve_content === $current_serve_content)
{

View File

@@ -18,13 +18,13 @@ if (! defined('IN_COMMON'))
* Print cp error function handler
*
* For admin
* @param mixed $msg
* @param mixed $navigation
* @param mixed $title
* @param mixed $exit
* @param mixed $redirect
* @param mixed $rs
* @param mixed $style
* @param mixed $msg
* @param mixed $navigation
* @param mixed $title
* @param mixed $exit
* @param mixed $redirect
* @param mixed $rs
* @param mixed $style
*/
function kleeja_admin_err($msg, $navigation = true, $title='', $exit = true, $redirect = false, $rs = 3, $style = 'admin_err')
{
@@ -193,7 +193,7 @@ function get_filter($item, $filter_type = false, $just_value = false, $get_by =
if ($just_value)
{
return $v['filter_value'];
return $v['filter_value'] ?? '';
}
return $v;
@@ -258,6 +258,7 @@ function build_search_query($search)
//if searched by a username
$usernamee = '';
if (! empty($search['username']) && (int) $config['user_system'] == 1)
{
$query = [
@@ -276,7 +277,7 @@ function build_search_query($search)
$SQL->freeresult($result);
if(! empty($usernamee))
if (! empty($usernamee))
{
$usernamee = 'AND (' . $usernamee . ')';
}

View File

@@ -205,7 +205,7 @@ function readable_size($size)
/**
* show an error message
*
* @param $message
* @param $message
* @param string $title
* @param bool $exit
* @param bool|string $redirect a link to redirect after showing the message, or false
@@ -240,7 +240,7 @@ function kleeja_err($message, $title = '', $exit = true, $redirect = false, $rs
/**
* show an information message
*
* @param $message
* @param $message
* @param string $title
* @param bool $exit
* @param bool|string $redirect a link to redirect after showing the message, or false
@@ -291,7 +291,7 @@ function kleeja_debug()
echo '<p>&nbsp;</p>';
echo '<p><h2><strong><em>SQL</em> Information :</strong></h2></p> ';
if (is_array($SQL->debugr))
if (! empty($SQL->debugr))
{
foreach ($SQL->debugr as $key=>$val)
{
@@ -495,7 +495,7 @@ function kleeja_check_form_key($form_name, $require_time = 300)
* Link generator
* TODO to be edited
* Files can be many links styles, so this will generate the current style of link
* @param $pid
* @param $pid
* @param array $extra
* @return string
*/
@@ -514,8 +514,8 @@ function kleeja_get_link ($pid, $extra = [])
if ($config['mod_writer'] && ! empty($extra['::NAME::']))
{
if (
(($pid == 'image' || $pid == 'thumb') && $config['id_form_img'] != 'direct') ||
($pid == 'file' && $config['id_form'] != 'direct')
(($pid == 'image' || $pid == 'thumb') && $config['id_form_img'] != 'direct') ||
($pid == 'file' && $config['id_form'] != 'direct')
) {
$extra['::NAME::'] = str_replace('.', '-', $extra['::NAME::']);
}
@@ -671,6 +671,7 @@ function kleeja_style_info($style_name)
}
$t = array_map('trim', @explode('=', $m, 2));
// ':' mean something secondary as in sub-array
if (strpos($t[0], ':') !== false)
{
@@ -730,52 +731,53 @@ function is_browser($b)
case 'ie':
$return = strpos(strtolower($u_agent), trim('msie ' . $r)) !== false ? true : false;
break;
break;
case 'firefox':
$return = strpos(str_replace('/', ' ', strtolower($u_agent)), trim('firefox ' . $r)) !== false ? true : false;
break;
break;
case 'safari':
$return = strpos(strtolower($u_agent), trim('safari/' . $r)) !== false ? true : false;
break;
break;
case 'chrome':
$return = strpos(strtolower($u_agent), trim('chrome ' . $r)) !== false ? true : false;
break;
break;
case 'flock':
$return = strpos(strtolower($u_agent), trim('flock ' . $r)) !== false ? true : false;
break;
break;
case 'opera':
$return = strpos(strtolower($u_agent), trim('opera ' . $r)) !== false ? true : false;
break;
break;
case 'konqueror':
$return = strpos(strtolower($u_agent), trim('konqueror/' . $r)) !== false ? true : false;
break;
break;
case 'mozilla':
$return = strpos(strtolower($u_agent), trim('gecko/' . $r)) !== false ? true : false;
break;
break;
case 'webkit':
$return = strpos(strtolower($u_agent), trim('applewebkit/' . $r)) !== false ? true : false;
break;
/**
* Mobile Phones are so popular those days, so we have to support them ...
* This is still in our test lab.
* @see http://en.wikipedia.org/wiki/List_of_user_agents_for_mobile_phones
**/
break;
/**
* Mobile Phones are so popular those days, so we have to support them ...
* This is still in our test lab.
* @see http://en.wikipedia.org/wiki/List_of_user_agents_for_mobile_phones
**/
case 'mobile':
$mobile_agents = ['iPhone;', 'iPod;', 'blackberry', 'Android', 'HTC' , 'IEMobile', 'LG/', 'LG-',
'LGE-', 'MOT-', 'Nokia', 'SymbianOS', 'nokia_', 'PalmSource', 'webOS', 'SAMSUNG-',
@@ -792,7 +794,7 @@ function is_browser($b)
}
}
break;
break;
}
is_array($plugin_run_result = Plugins::getInstance()->run('is_browser_func', get_defined_vars())) ? extract($plugin_run_result) : null; //run hook
@@ -847,7 +849,7 @@ function kleeja_date($time, $human_time = true, $format = false)
if (! empty($config['time_zone']) && strpos($config['time_zone'], '/') !== false)
{
if(strpos($config['time_zone'], 'Buraydah') !== false)
if (strpos($config['time_zone'], 'Buraydah') !== false)
{
$config['time_zone'] = 'Asia/Riyadh';
}
@@ -951,7 +953,8 @@ function time_zones()
*/
function configField($name, $type = 'text', $select_options = [])
{
switch ($type) {
switch ($type)
{
default:
case 'text':
return '<input type="text" id="kj_meta_seo_home_meta_keywords" name="' . $name . '"' .

1234
includes/mime_types.php Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -19,8 +19,8 @@ class Pagination
protected $totalPages, $startRow , $currentPage;
/**
* @param $rowsPerPage
* @param $numRows
* @param $rowsPerPage
* @param $numRows
* @param int $currentPage
*/
public function __construct($rowsPerPage, $numRows, $currentPage = 1)
@@ -91,7 +91,7 @@ class Pagination
/**
* @param $link
* @param $link
* @param string $link_plus
* @return string
*/

View File

@@ -2,10 +2,10 @@
//
// Portable PHP password hashing framework.
//
// Version 0.1 / genuine.
// Version 0.5.4 / genuine.
//
// Written by Solar Designer <solar at openwall.com> in 2004-2006 and placed in
// the public domain.
// the public domain. Revised in subsequent years, still public domain.
//
// There's absolutely no warranty.
//
@@ -24,7 +24,6 @@
// Obviously, since this code is in the public domain, the above are not
// requirements (there can be none), but merely suggestions.
//
// @version $Id: phpass.php 1551 2010-07-25 22:09:47Z saanina $
//no for directly open
if (! defined('IN_COMMON'))
@@ -51,14 +50,19 @@ class PasswordHash
$this->portable_hashes = $portable_hashes;
$this->random_state = microtime() . getmypid();
$this->random_state = microtime();
if (function_exists('getmypid'))
{
$this->random_state .= getmypid();
}
}
public function get_random_bytes($count)
{
$output = '';
if (($fh = @fopen('/dev/urandom', 'rb')))
if (@is_readable('/dev/urandom') && ($fh = @fopen('/dev/urandom', 'rb')))
{
$output = fread($fh, $count);
fclose($fh);
@@ -71,7 +75,7 @@ class PasswordHash
for ($i = 0; $i < $count; $i += 16)
{
$this->random_state = md5(microtime() . $this->random_state);
$output .= pack('H*', md5($this->random_state));
$output .= md5($this->random_state, true);
}
$output = substr($output, 0, $count);
@@ -111,7 +115,8 @@ class PasswordHash
break;
}
$output .= $this->itoa64[($value >> 18) & 0x3f];
} while ($i < $count);
}
while ($i < $count);
return $output;
}
@@ -119,7 +124,7 @@ class PasswordHash
public function gensalt_private($input)
{
$output = '$P$';
$output .= $this->itoa64[min($this->iteration_count_log2 + ((PHP_VERSION >= '5') ? 5 : 3), 30)];
$output .= $this->itoa64[min($this->iteration_count_log2 + 5, 30)];
$output .= $this->encode64($input, 6);
return $output;
@@ -129,12 +134,15 @@ class PasswordHash
{
$output = '*0';
if (substr($setting, 0, 2) == $output)
if (substr($setting, 0, 2) === $output)
{
$output = '*1';
}
if (substr($setting, 0, 3) != '$P$')
$id = substr($setting, 0, 3);
// We use "$P$", phpBB3 uses "$H$" for the same thing
if ($id !== '$P$' && $id !== '$H$')
{
return $output;
}
@@ -150,33 +158,23 @@ class PasswordHash
$salt = substr($setting, 4, 8);
if (strlen($salt) != 8)
if (strlen($salt) !== 8)
{
return $output;
}
// We're kind of forced to use MD5 here since it's the only
// cryptographic primitive available in all versions of PHP
// currently in use. To implement our own low-level crypto
// in PHP would result in much worse performance and
// We were kind of forced to use MD5 here since it's the only
// cryptographic primitive that was available in all versions
// of PHP in use. To implement our own low-level crypto in PHP
// would have resulted in much worse performance and
// consequently in lower iteration counts and hashes that are
// quicker to crack (by non-PHP code).
if (PHP_VERSION >= '5')
$hash = md5($salt . $password, true);
do
{
$hash = md5($salt . $password, true);
do
{
$hash = md5($hash . $password, true);
} while (--$count);
}
else
{
$hash = pack('H*', md5($salt . $password));
do
{
$hash = pack('H*', md5($hash . $password));
} while (--$count);
$hash = md5($hash . $password, true);
}
while (--$count);
$output = substr($setting, 0, 12);
$output .= $this->encode64($hash, 16);
@@ -184,24 +182,6 @@ class PasswordHash
return $output;
}
public function gensalt_extended($input)
{
$count_log2 = min($this->iteration_count_log2 + 8, 24);
// This should be odd to not reveal weak DES keys, and the
// maximum valid value is (2**24 - 1) which is odd anyway.
$count = (1 << $count_log2) - 1;
$output = '_';
$output .= $this->itoa64[$count & 0x3f];
$output .= $this->itoa64[($count >> 6) & 0x3f];
$output .= $this->itoa64[($count >> 12) & 0x3f];
$output .= $this->itoa64[($count >> 18) & 0x3f];
$output .= $this->encode64($input, 3);
return $output;
}
public function gensalt_blowfish($input)
{
// This one needs to use a different order of characters and a
@@ -215,7 +195,7 @@ class PasswordHash
$itoa64 = './ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
$output = '$2a$';
$output .= chr(ord('0') + $this->iteration_count_log2 / 10);
$output .= chr((int) (ord('0') + $this->iteration_count_log2 / 10));
$output .= chr(ord('0') + $this->iteration_count_log2 % 10);
$output .= '$';
@@ -242,7 +222,8 @@ class PasswordHash
$c1 |= $c2 >> 6;
$output .= $itoa64[$c1];
$output .= $itoa64[$c2 & 0x3f];
} while (1);
}
while (1);
return $output;
}
@@ -251,26 +232,12 @@ class PasswordHash
{
$random = '';
if (CRYPT_BLOWFISH == 1 && ! $this->portable_hashes)
if (CRYPT_BLOWFISH === 1 && ! $this->portable_hashes)
{
$random = $this->get_random_bytes(16);
$hash = crypt($password, $this->gensalt_blowfish($random));
if (strlen($hash) == 60)
{
return $hash;
}
}
if (CRYPT_EXT_DES == 1 && ! $this->portable_hashes)
{
if (strlen($random) < 3)
{
$random = $this->get_random_bytes(3);
}
$hash = crypt($password, $this->gensalt_extended($random));
if (strlen($hash) == 20)
if (strlen($hash) === 60)
{
return $hash;
}
@@ -281,10 +248,12 @@ class PasswordHash
$random = $this->get_random_bytes(6);
}
$hash =
$this->crypt_private($password,
$this->gensalt_private($random));
$this->crypt_private(
$password,
$this->gensalt_private($random)
);
if (strlen($hash) == 34)
if (strlen($hash) === 34)
{
return $hash;
}
@@ -299,11 +268,15 @@ class PasswordHash
{
$hash = $this->crypt_private($password, $stored_hash);
if ($hash[0] == '*')
if ($hash[0] === '*')
{
$hash = crypt($password, $stored_hash);
}
return $hash == $stored_hash;
// This is not constant-time. In order to keep the code simple,
// for timing safety we currently rely on the salts being
// unpredictable, which they are at least in the non-fallback
// cases (that is, when we use /dev/urandom and bcrypt).
return $hash === $stored_hash;
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -23,7 +23,7 @@ class kleeja_style
/**
* Function to load a template file.
* @param $template_name
* @param $template_name
* @param null|mixed $style_path
*/
protected function _load_template($template_name, $style_path = null)
@@ -38,6 +38,7 @@ class kleeja_style
$html = file_get_contents($template_path);
$html = $this->_parse($html, $template_name);
$html = "<!-- file generated by kleeja {kleeja.net} -->\n" . $html;
//use 'b' to force binary mode
if ($filename = @fopen(PATH . 'cache/tpl_' . $this->re_name_tpl($template_name, $style_path) . '.php', 'wb'))
@@ -56,7 +57,7 @@ class kleeja_style
/**
* check if a template exists or not
* @param $template_name
* @param $template_name
* @param null $style_path
*/
public function template_exists($template_name, $style_path = null)
@@ -66,7 +67,7 @@ class kleeja_style
$is_admin_template = false;
$style_path = str_replace(DIRECTORY_SEPARATOR, '/', $style_path);
$style_path = str_replace(DIRECTORY_SEPARATOR, '/', $style_path ?? '');
//admin template always begin with admin_
if (substr($template_name, 0, 6) == 'admin_')
@@ -129,19 +130,19 @@ class kleeja_style
is_array($plugin_run_result = Plugins::getInstance()->run('style_parse_func', get_defined_vars())) ? extract($plugin_run_result) : null; //run hook
$html = preg_replace_callback('/<IGNORE>(.*?)<\/IGNORE>/is', function($m) {
$html = preg_replace_callback('/<IGNORE>(.*?)<\/IGNORE>/is', function ($m) {
return '<STRREV>' . strrev($m[1]) . '</STRREV>';
}, $html);
$html = preg_replace(['#<([\?%])=?.*?\1>#s', '#<script\s+language\s*=\s*(["\']?)php\1\s*>.*?</script\s*>#s', '#<\?php(?:\r\n?|[ \n\t]).*?\?>#s'], '', $html);
$html = preg_replace_callback('/\(([{A-Z0-9_\.}\s!=<>]+)\?(.*):(.*)\)/iU', function($m) {
$html = preg_replace_callback('/\(([{A-Z0-9_\.}\s!=<>]+)\?(.*):(.*)\)/iU', function ($m) {
return '<IF NAME="' . $m[1] . '">' . $m[2] . '<ELSE>' . $m[3] . '</IF>';
}, $html);
$html = preg_replace_callback('/<(IF|ELSEIF|UNLESS) (.+)>/iU', ['kleeja_style', '_if_callback'], $html);
$html = preg_replace_callback('/<LOOP\s+NAME\s*=\s*(\"|)+([a-z0-9_\.]{1,})+(\"|)\s*>/i', function($m) {
$html = preg_replace_callback('/<LOOP\s+NAME\s*=\s*(\"|)+([a-z0-9_\.]{1,})+(\"|)\s*>/i', function ($m) {
return '<?php foreach($this->vars["' . (strpos($m[2], '.') !== false ? str_replace('.', '"]["', $m[2]) : $m[2]) . '"] as $key=>$value){ ?>';
}, $html);
$html = preg_replace_callback(kleeja_style::reg('var'), ['kleeja_style', '_vars_callback'], $html);
$html = preg_replace_callback('/<STRREV>(.*?)<\/STRREV>/is', function($m) {
$html = preg_replace_callback('/<STRREV>(.*?)<\/STRREV>/is', function ($m) {
return strrev($m[1]);
}, $html);
@@ -163,7 +164,7 @@ class kleeja_style
/**
* if tag
* @param $matches
* @param $matches
* @return string
*/
protected function _if_callback($matches)
@@ -173,7 +174,7 @@ class kleeja_style
foreach ([
'NAME' => '', 'LOOP' => '', 'AND' => ' && ', 'OR' => ' || ', 'ISSET' => ' isset', 'EMPTY' => ' empty'
] as $attribute=>$separator)
] as $attribute=> $separator)
{
if (isset($atts[$attribute]))
{
@@ -182,7 +183,7 @@ class kleeja_style
$condition .= $separator . ($haveParentheses ? '(' : '') .
$this->parse_condition($atts[$attribute], ! empty($atts['LOOP'])) .
($haveParentheses ? ')' : '')
;
;
}
}
@@ -211,7 +212,7 @@ class kleeja_style
$var2 = trim($arr[3]);
//check for type
if ($var2[0] != '$' && ! preg_match('/[0-9]/', $var2))
if (strpos($var2, '$')!==0 && ! preg_match('/[0-9]/', $var2))
{
$var2 = '"' . str_replace('"', '\"', $var2) . '"';
}
@@ -229,7 +230,7 @@ class kleeja_style
/**
* make variable printable
* @param $matches
* @param $matches
* @return string
*/
protected function _vars_callback($matches)
@@ -247,7 +248,7 @@ class kleeja_style
/**
* variable replace
* @param $matches
* @param $matches
* @return string
*/
protected function _var_callback($matches)
@@ -269,7 +270,7 @@ class kleeja_style
/**
* att variable replace
* @param $matches
* @param $matches
* @return string
*/
protected function _var_callback_att($matches)
@@ -280,7 +281,7 @@ class kleeja_style
/**
* get reg var
* @param $var
* @param $var
* @return mixed
*/
protected function reg($var)
@@ -292,7 +293,7 @@ class kleeja_style
/**
* get tag attributes
* @param $tag
* @param $tag
* @return array
*/
protected function _get_attributes($tag)
@@ -323,15 +324,15 @@ class kleeja_style
/**
* load parser and return page content
* @param $template_name
* @param null $style_path optional, good for plugins
* @param $template_name
* @param null $style_path optional, good for plugins
* @return mixed|string
*/
public function display($template_name, $style_path = null)
{
global $config;
$this->vars = &$GLOBALS;
$this->vars = $GLOBALS;
//is there ?
if (! file_exists(PATH . 'cache/tpl_' . $this->re_name_tpl($template_name, $style_path) . '.php') || ! $this->caching)
@@ -349,12 +350,12 @@ class kleeja_style
/**
* generate admin option block
* @param $html
* @param $html
* @return string
*/
public function admindisplayoption($html)
{
$this->vars = &$GLOBALS;
$this->vars = $GLOBALS;
$eval_on = false;
eval('$eval_on = true;');
@@ -382,7 +383,7 @@ class kleeja_style
/**
* change name of template to be valid
* @param $name
* @param $name
* @param null|mixed $style_path
* @return mixed
*/

View File

@@ -302,14 +302,14 @@ function user_is_flooding($user_id = '-1')
}
//if the value is zero (means that the function is disabled) then return false immediately
if (($user_id == '-1' && $config['guestsectoupload'] == 0) || $user_id != '-1' && $config['usersectoupload'] == 0)
if ($config['usersectoupload'] == 0)
{
return false;
}
//In my point of view I see 30 seconds is not bad rate to stop flooding ..
//even though this minimum rate sometime isn't enough to protect Kleeja from flooding attacks
$time = time() - ($user_id == '-1' ? $config['guestsectoupload'] : $config['usersectoupload']);
$time = time() - $config['usersectoupload'];
$query = [
'SELECT' => 'f.time',

View File

@@ -47,55 +47,48 @@ function helper_thumb($source_path, $ext, $dest_image, $dw, $dh)
//if there is imagick lib, then we should use it
if (function_exists('phpversion') && phpversion('imagick'))
{
$ext = strtolower(trim($ext));
if (empty($ext))
{
$ext = strtolower(preg_replace('/^.*\./', '', $source_path));
}
helper_thumb_imagick($source_path, $ext, $dest_image, $dw, $dh);
return null;
}
//get file info
list($source_width, $source_height, $source_type) = [false, false, false];
if (function_exists('getimagesize'))
{
list($source_width, $source_height, $source_type) = getimagesize($source_path);
}
if (! function_exists('imagecreatefromjpeg'))
if (! function_exists('imagecreatefromjpeg') || ! function_exists('getimagesize'))
{
return null;
}
$source_gdim = null;
//get file info
list($source_width, $source_height, $source_type) = getimagesize($source_path);
$ext = strtolower(trim($ext));
$source_gdim = false;
if (empty($ext))
switch ($source_type)
{
$ext = strtolower(preg_replace('/^.*\./', '', $source_path));
}
switch ($ext)
{
case 'gif':
case IMAGETYPE_GIF:
$source_gdim = imagecreatefromgif($source_path);
break;
case 'jpg':
case 'jpeg':
case IMAGETYPE_JPEG:
$source_gdim = imagecreatefromjpeg($source_path);
break;
case 'png':
case IMAGETYPE_PNG:
$source_gdim = imagecreatefrompng($source_path);
break;
case 'bmp':
if (! defined('BMP_CLASS_INCLUDED'))
case IMAGETYPE_BMP:
if (! function_exists('imagecreatefrombmp'))
{
include dirname(__file__) . '/BMP.php';
define('BMP_CLASS_INCLUDED', true);
}
$source_gdim = imagecreatefrombmp($source_path);
@@ -103,8 +96,10 @@ function helper_thumb($source_path, $ext, $dest_image, $dw, $dh)
break;
}
$source_width = ! $source_width ? imagesx($source_gdim) : $source_width;
$source_height = ! $source_height ? imagesy($source_gdim) : $source_height;
if (! $source_gdim)
{
return null;
}
$source_aspect_ratio = $source_width / $source_height;
$desired_aspect_ratio = $dw / $dh;
@@ -128,23 +123,30 @@ function helper_thumb($source_path, $ext, $dest_image, $dw, $dh)
imagecopyresampled(
$temp_gdim,
$source_gdim,
0, 0,
0, 0,
$temp_width, $temp_height,
$source_width, $source_height
0,
0,
0,
0,
$temp_width,
$temp_height,
$source_width,
$source_height
);
// Copy cropped region from temporary image into the desired GD image
$x0 = ($temp_width - $dw) / 2;
$y0 = ($temp_height - $dh) / 2;
$x0 = (int) (($temp_width - $dw) / 2);
$y0 = (int) (($temp_height - $dh) / 2);
$desired_gdim = imagecreatetruecolor($dw, $dh);
imagecopy(
$desired_gdim,
$temp_gdim,
0, 0,
$x0, $y0,
$dw, $dh
0,
0,
$x0,
$y0,
$dw,
$dh
);
// Create thumbnail
@@ -164,7 +166,7 @@ function helper_thumb($source_path, $ext, $dest_image, $dw, $dh)
case 'gif':
$return = @imagegif($desired_gdim, $dest_image);
break;
break;
case 'bmp':
$return = @imagebmp($desired_gdim, $dest_image);
@@ -173,9 +175,7 @@ function helper_thumb($source_path, $ext, $dest_image, $dw, $dh)
default:
// Unsupported format
$return = false;
break;
$return = false;
}
@imagedestroy($desired_gdim);
@@ -241,21 +241,24 @@ function helper_thumb_imagick($name, $ext, $filename, $new_w, $new_h)
//guess the right thumb height, weights
list($thumb_w, $thumb_h) = scale_image_imagick(
$im->getImageWidth(),
$im->getImageHeight(),
$new_w,
$new_h);
$im->getImageWidth(),
$im->getImageHeight(),
$new_w,
$new_h
);
//an exception for gif image
//generating thumb with 10 frames only, big gif is a devil
if ($ext == 'gif')
{
$i = 0;
//$gif_new = new Imagick();
foreach ($im as $frame)
{
$frame->thumbnailImage($thumb_w, $thumb_h);
$frame->setImagePage($thumb_w, $thumb_h, 0, 0);
// $gif_new->addImage($frame->getImage());
if ($i >= 10)
{

View File

@@ -18,8 +18,8 @@ if (! defined('IN_COMMON'))
* return nothing because if it work then ok , and if not then ok too :)
* @todo text support
*
* @param $name
* @param $ext
* @param $name
* @param $ext
* @return bool|void
*/
function helper_watermark($name, $ext)
@@ -44,12 +44,12 @@ function helper_watermark($name, $ext)
if (file_exists(dirname(__FILE__) . '/../../images/watermark.png'))
{
$logo_path= dirname(__FILE__) . '/../../images/watermark.png';
$src_logo = imagecreatefrompng($logo_path);
$src_logo = @imagecreatefrompng($logo_path);
}
elseif (file_exists(dirname(__FILE__) . '/../../images/watermark.gif'))
{
$logo_path= dirname(__FILE__) . '/../../images/watermark.gif';
$src_logo = imagecreatefromgif($logo_path);
$src_logo = @imagecreatefromgif($logo_path);
}
//no watermark pic
@@ -66,38 +66,44 @@ function helper_watermark($name, $ext)
}
//now, lets work and detect our image extension
if (strpos($ext, 'jp') !== false)
{
$src_img = @imagecreatefromjpeg($name);
}
elseif (strpos($ext, 'png') !== false)
{
$src_img = @imagecreatefrompng($name);
}
elseif (strpos($ext, 'gif') !== false)
{
return;
// $src_img = @imagecreatefromgif($name);
}
elseif (strpos($ext, 'bmp') !== false)
{
if (! defined('BMP_CLASS_INCLUDED'))
{
include dirname(__file__) . '/BMP.php';
define('BMP_CLASS_INCLUDED', true);
}
list($bwidth, $bheight, $src_img_type) = getimagesize($name);
$src_img = imagecreatefrombmp($name);
$src_img = false;
switch ($src_img_type)
{
case IMAGETYPE_GIF:
//$src_img = imagecreatefromgif($name);
return;
break;
case IMAGETYPE_JPEG:
$src_img = imagecreatefromjpeg($name);
break;
case IMAGETYPE_PNG:
$src_img = imagecreatefrompng($name);
break;
case IMAGETYPE_BMP:
if (! function_exists('imagecreatefrombmp'))
{
include dirname(__file__) . '/BMP.php';
}
$src_img = imagecreatefrombmp($name);
break;
}
else
if (! $src_img)
{
return;
}
//detect width, height for the image
$bwidth = @imagesx($src_img);
$bheight = @imagesy($src_img);
//detect width, height for the watermark image
$lwidth = @imagesx($src_logo);
$lheight = @imagesy($src_logo);
@@ -176,6 +182,7 @@ function helper_watermark_imagick($name, $ext, $logo)
if ($ext == 'gif')
{
$i = 0;
//$gif_new = new Imagick();
foreach ($im as $frame)
{

View File

@@ -182,6 +182,19 @@ class defaultUploader implements KleejaUploader
$SQL->build($update_query);
if ($fileInfo['currentUserId']!=-1)
{
// update user storage size
$update_query = [
'UPDATE' => "{$dbprefix}users",
'SET' => 'storage_size=storage_size+' . intval($fileInfo['fileSize']),
'WHERE' => 'id=' . $fileInfo['currentUserId'],
];
$SQL->build($update_query);
}
$this->generateOutputBox($fileInfo);
}
@@ -224,12 +237,13 @@ class defaultUploader implements KleejaUploader
if ($config['del_url_file'])
{
$extra_del = get_up_tpl_box('del_file_code',
[
'b_title' => $lang['URL_F_DEL'],
'b_code_link' => kleeja_get_link('del', ['::CODE::'=>$fileInfo['DeleteCode']])
]
);
$extra_del = get_up_tpl_box(
'del_file_code',
[
'b_title' => $lang['URL_F_DEL'],
'b_code_link' => kleeja_get_link('del', ['::CODE::'=>$fileInfo['DeleteCode']])
]
);
}
//show imgs
@@ -248,20 +262,21 @@ class defaultUploader implements KleejaUploader
// generate a thumbnail
helper_thumb(
$fileInfo['saveToFolder'] . '/' . $fileInfo['generatedFileName'],
$fileInfo['fileExtension'],
$fileInfo['fileExtension'],
$fileInfo['saveToFolder'] . '/thumbs/' . $fileInfo['generatedFileName'],
$thmb_dim_w,
$thmb_dim_h
);
$img_html_result .= get_up_tpl_box('image_thumb',
[
'b_title' => $lang['URL_F_THMB'],
'b_url_link' => kleeja_get_link('image', $file_info),
'b_img_link' => kleeja_get_link('thumb', $file_info)
]
);
$img_html_result .= get_up_tpl_box(
'image_thumb',
[
'b_title' => $lang['URL_F_THMB'],
'b_url_link' => kleeja_get_link('image', $file_info),
'b_img_link' => kleeja_get_link('thumb', $file_info)
]
);
// watermark on image
@@ -271,13 +286,14 @@ class defaultUploader implements KleejaUploader
}
//then show, image box
$img_html_result .= get_up_tpl_box('image',
[
'b_title' => $lang['URL_F_IMG'],
'b_bbc_title' => $lang['URL_F_BBC'],
'b_url_link' => kleeja_get_link('image', $file_info),
]
);
$img_html_result .= get_up_tpl_box(
'image',
[
'b_title' => $lang['URL_F_IMG'],
'b_bbc_title' => $lang['URL_F_BBC'],
'b_url_link' => kleeja_get_link('image', $file_info),
]
);
//add del link box to the result if there is any
$img_html_result .= $extra_del;
@@ -295,12 +311,13 @@ class defaultUploader implements KleejaUploader
else
{
//then show other files
$else_html_result = get_up_tpl_box('file',
[
'b_title' => $lang['URL_F_FILE'],
'b_bbc_title' => $lang['URL_F_BBC'],
'b_url_link' => kleeja_get_link('file', $file_info),
]
$else_html_result = get_up_tpl_box(
'file',
[
'b_title' => $lang['URL_F_FILE'],
'b_bbc_title' => $lang['URL_F_BBC'],
'b_url_link' => kleeja_get_link('file', $file_info),
]
);
@@ -374,8 +391,10 @@ class defaultUploader implements KleejaUploader
// to prevent flooding, user must wait, waiting-time is grapped from Kleeja settings, admin is exceptional
if (! user_can('enter_acp') && user_is_flooding($current_user_id))
{
$this->addErrorMessage(sprintf($lang['YOU_HAVE_TO_WAIT'],
$current_user_id == '-1' ? $config['guestsectoupload'] : $config['usersectoupload']));
$this->addErrorMessage(sprintf(
$lang['YOU_HAVE_TO_WAIT'],
$config['usersectoupload']
));
return;
}
@@ -435,10 +454,12 @@ class defaultUploader implements KleejaUploader
{
case UPLOAD_ERR_INI_SIZE:
case UPLOAD_ERR_FORM_SIZE:
$this->addErrorMessage(sprintf(
$this->addErrorMessage(
sprintf(
$lang['SIZE_F_BIG'],
htmlspecialchars($filename),
'php.ini/upload_max_filesize: ' . $upload_max_size)
'php.ini/upload_max_filesize: ' . $upload_max_size
)
);
break;
@@ -470,7 +491,6 @@ class defaultUploader implements KleejaUploader
$this->addErrorMessage(sprintf($lang['CANT_UPLAOD'], htmlspecialchars($filename)));
break;
}
}
@@ -492,13 +512,13 @@ class defaultUploader implements KleejaUploader
/**
* upload a file from $_FILES
* @param integer $fieldNumber as in file[i]
* @param $current_uploading_folder
* @param $current_user_id
* @param integer $fieldNumber as in file[i]
* @param $current_uploading_folder
* @param $current_user_id
*/
public function uploadTypeFile($fieldNumber, $current_uploading_folder, $current_user_id)
{
global $config, $lang;
global $config, $lang, $remaining_storage;
$fileInfo = [
'saveToFolder',
@@ -531,7 +551,8 @@ class defaultUploader implements KleejaUploader
}
// get the extension of file
$fileInfo['fileExtension'] = strtolower(array_pop(explode('.', $fileInfo['originalFileName'])));
$originalFileName = explode('.', $fileInfo['originalFileName']);
$fileInfo['fileExtension'] = strtolower(array_pop($originalFileName));
// them the size
@@ -552,10 +573,11 @@ class defaultUploader implements KleejaUploader
if (file_exists($current_uploading_folder . '/' . $fileInfo['generatedFileName']))
{
$fileInfo['generatedFileName'] = change_filename_decoding(
$fileInfo['generatedFileName'],
$fieldNumber, $fileInfo['fileExtension'],
'exists'
);
$fileInfo['generatedFileName'],
$fieldNumber,
$fileInfo['fileExtension'],
'exists'
);
}
is_array($plugin_run_result = Plugins::getInstance()->run('defaultUploader_uploadTypeFile_1st', get_defined_vars())) ? extract($plugin_run_result) : null; //run hook
@@ -568,10 +590,10 @@ class defaultUploader implements KleejaUploader
if ($current_user_id == '-1')
{
$this->addErrorMessage(
sprintf($lang['FORBID_EXT'], $fileInfo['fileExtension'])
sprintf($lang['FORBID_EXT'], $fileInfo['fileExtension'])
. '<br> <a href="' . ($config['mod_writer'] ? 'register.html' : 'ucp.php?go=register') .
'" title="' . htmlspecialchars($lang['REGISTER']) . '">' . $lang['REGISTER'] . '</a>'
);
);
}
// a member
else
@@ -597,11 +619,17 @@ class defaultUploader implements KleejaUploader
// check file size
elseif ($this->getAllowedFileExtensions()[$fileInfo['fileExtension']] > 0 && $fileInfo['fileSize'] >= $this->getAllowedFileExtensions()[$fileInfo['fileExtension']])
{
$this->addErrorMessage(sprintf(
$lang['SIZE_F_BIG'],
htmlspecialchars($_FILES['file_' . $fieldNumber . '_']['name']),
readable_size($this->getAllowedFileExtensions()[$fileInfo['fileExtension']]))
);
$this->addErrorMessage(
sprintf(
$lang['SIZE_F_BIG'],
htmlspecialchars($_FILES['file_' . $fieldNumber . '_']['name']),
readable_size($this->getAllowedFileExtensions()[$fileInfo['fileExtension']])
)
);
}
elseif ($remaining_storage != -1 && $fileInfo['fileSize'] > $remaining_storage)
{
$this->addErrorMessage($lang['TOTAL_SIZE_EXCEEDED']);
}
// no errors, so upload it
else
@@ -614,6 +642,11 @@ class defaultUploader implements KleejaUploader
if ($file)
{
$this->saveToDatabase($fileInfo);
if ($remaining_storage != -1)
{
$remaining_storage -= $fileInfo['fileSize'];
}
}
else
{

View File

@@ -17,6 +17,12 @@ if (! defined('IN_COMMON'))
class usrcp
{
private $user_id = -1;
private $group_id = 2;
private $user_name = null;
private $user_mail = null;
private $last_visit = null;
public function data($name, $pass, $hashed = false, $expire = 86400, $loginadm = false)
{
//expire
@@ -34,7 +40,7 @@ class usrcp
}
//normal
return $this->normal($name, $pass, $hashed, $expire, $loginadm);
return $this->normal($name, $pass, $expire, $hashed, $loginadm);
}
//get username by id
@@ -55,13 +61,13 @@ class usrcp
}
//now our table, normal user system
public function normal($name, $pass, $hashed = false, $expire, $loginadm = false)
public function normal($name, $pass, $expire, $hashed = false, $loginadm = false)
{
global $SQL, $dbprefix, $config, $userinfo;
$userinfo = [
'id' => 0,
'group_id' => 2,
'id' => $this->user_id,
'group_id' => $this->group_id,
];
$query = [
@@ -98,6 +104,7 @@ class usrcp
if (strlen($row['password']) == '32' && empty($row['password_salt']) && defined('CONVERTED_SCRIPT'))
{
$passmd5 = md5($pass);
////update old md5 hash to phpass hash
if ($row['password'] == $passmd5)
{
@@ -117,8 +124,8 @@ class usrcp
$SQL->build($update_query);
}
else
{ //if the password is wrong
else //if the password is wrong
{
return false;
}
}
@@ -128,19 +135,15 @@ class usrcp
return false;
}
//Avoid dfining constants again for admin panel login
if (! $loginadm)
{
define('USER_ID', $row['id']);
define('GROUP_ID', $row['group_id']);
define('USER_NAME', $row['name']);
define('USER_MAIL', $row['mail']);
define('LAST_VISIT', $row['last_visit']);
}
//all user fileds info
$userinfo = $row;
$this->user_id = $row['id'];
$this->group_id = $row['group_id'];
$this->user_name = $row['name'];
$this->user_mail = $row['mail'];
$this->last_visit = $row['last_visit'];
$user_y = base64_encode(serialize(['id'=>$row['id'], 'name'=>$row['name'], 'mail'=>$row['mail'], 'last_visit'=>$row['last_visit']]));
if (! $hashed && ! $loginadm)
@@ -152,9 +155,10 @@ class usrcp
//if last visit > 1 minute then update it
if (empty($row['last_visit']) || time() - $row['last_visit'] > 60)
{
$this->last_visit = time();
$update_last_visit = [
'UPDATE' => "{$dbprefix}users",
'SET' => 'last_visit=' . time(),
'SET' => 'last_visit=' . $this->last_visit,
'WHERE' => 'id=' . intval($row['id'])
];
@@ -208,7 +212,7 @@ class usrcp
{
is_array($plugin_run_result = Plugins::getInstance()->run('id_func_usr_class', get_defined_vars())) ? extract($plugin_run_result) : null; //run hook
return defined('USER_ID') ? USER_ID : false;
return $this->user_id;
}
// group ids
@@ -216,7 +220,7 @@ class usrcp
{
is_array($plugin_run_result = Plugins::getInstance()->run('group_id_func_usr_class', get_defined_vars())) ? extract($plugin_run_result) : null; //run hook
return defined('GROUP_ID') ? GROUP_ID : false;
return $this->group_id;
}
// user name
@@ -224,7 +228,7 @@ class usrcp
{
is_array($plugin_run_result = Plugins::getInstance()->run('name_func_usr_class', get_defined_vars())) ? extract($plugin_run_result) : null; //run hook
return defined('USER_NAME') ? USER_NAME : false;
return $this->user_name;
}
// user mail
@@ -232,7 +236,15 @@ class usrcp
{
is_array($plugin_run_result = Plugins::getInstance()->run('mail_func_usr_class', get_defined_vars())) ? extract($plugin_run_result) : null; //run hook
return defined('USER_MAIL') ? USER_MAIL : false;
return $this->user_mail;
}
// last visit
public function last_visit()
{
is_array($plugin_run_result = Plugins::getInstance()->run('last_visit_func_usr_class', get_defined_vars())) ? extract($plugin_run_result) : null; //run hook
return $this->last_visit;
}
// logout func
@@ -246,6 +258,12 @@ class usrcp
$this->logout_cp();
}
$this->user_id = -1;
$this->group_id = 2;
$this->user_name = null;
$this->user_mail = null;
$this->last_visit = null;
//is ther any cookies
$this->kleeja_set_cookie('ulogu', '', time() - 31536000);//31536000 = year
@@ -375,7 +393,7 @@ class usrcp
$data = str_replace('=', '_', base64_encode($data));
$data = strtr($data, $txt);
break;
break;
case 2:
$txtx = array_flip($txt);
@@ -383,7 +401,7 @@ class usrcp
$data = strtr($data, $txtx);
$data = base64_decode(str_replace('_', '=', $data));
break;
break;
}
return $data;
@@ -411,8 +429,8 @@ class usrcp
//to make sure
$userinfo = [
'id' => -1,
'group_id' => 2,
'id' => $this->user_id,
'group_id' => $this->group_id,
];
//if login up
@@ -425,25 +443,12 @@ class usrcp
//if not expire
if (($hashed_expire == sha1(md5($config['h_key'] . $hashed_password) . $expire_at)) && ($expire_at > time()))
{
if (user_can('enter_acp', $group_id))
if (! empty($u_info))
{
$user_data = $this->data($user_id, $hashed_password, true, $expire_at);
}
else
{
if (! empty($u_info))
{
$userinfo = unserialize(base64_decode($u_info));
$userinfo['group_id'] = $group_id;
$userinfo['password'] = $hashed_password;
define('USER_ID', $userinfo['id']);
define('GROUP_ID', $userinfo['group_id']);
define('USER_NAME', $userinfo['name']);
define('USER_MAIL', $userinfo['mail']);
define('LAST_VISIT', $userinfo['last_visit']);
$user_data = true;
}
$userinfo = unserialize(base64_decode($u_info));
$userinfo['group_id'] = $group_id;
$userinfo['password'] = $hashed_password;
$user_data = $this->data($user_id, $hashed_password, true, $expire_at);
}
}
@@ -453,15 +458,14 @@ class usrcp
}
else
{
$this->user_id = $userinfo['id'];
$this->group_id = $userinfo['group_id'];
$this->user_name = $userinfo['name'];
$this->user_mail = $userinfo['mail'];
$this->last_visit = $userinfo['last_visit'];
return $user_data;
}
}
else
{
//guest
define('USER_ID', $userinfo['id']);
define('GROUP_ID', $userinfo['group_id']);
}
return false; //nothing
}

View File

@@ -16,9 +16,9 @@ if (! defined('IN_COMMON'))
define('KLEEJA_VERSION', '3.1.6');
define('KLEEJA_VERSION', '3.1.7');
define('KLEEJA_DB_VERSION', '9');
define('KLEEJA_DB_VERSION', '10');
// Kleeja min requirements
define('MIN_PHP_VERSION', '7.0');

View File

@@ -54,11 +54,17 @@ $action = $config['siteurl'];
$uploadingMethodClassBaseName = basename($uploadingMethodClass, '.php');
$uploader = new $uploadingMethodClassBaseName;
if (! $uploader instanceof KleejaUploader)
{
kleeja_err('Your upload Method class is not implemented our KleejaUploader Interface');
exit;
}
$uploader->setAllowedFileExtensions($d_groups[$userinfo['group_id']]['exts']);
$uploader->setUploadFieldsLimit($config['filesnum']);
$remaining_storage = $d_groups[$userinfo['group_id']]['configs']['max_storage']>0 ? $d_groups[$userinfo['group_id']]['configs']['max_storage']-$userinfo['storage_size'] : -1;
if (ip('submitr'))
{

View File

@@ -37,6 +37,7 @@ $config_values[] = ['user_system', '1', '<select id=\"user_system\" name=\"user_
$config_values[] = ['register', '1', '<label>{lang.YES}<input type=\"radio\" id=\"register\" name=\"register\" value=\"1\" <IF NAME=\"con.register==1\"> checked=\"checked\"</IF> /></label>\r\n <label>{lang.NO}<input type=\"radio\" id=\"register\" name=\"register\" value=\"0\" <IF NAME=\"con.register==0\"> checked=\"checked\"</IF> /></label>', 10, 'general', 0, 0];
$config_values[] = ['enable_userfile', '1', '<label>{lang.YES}<input type=\"radio\" id=\"enable_userfile\" name=\"enable_userfile\" value=\"1\" <IF NAME=\"con.enable_userfile==1\"> checked=\"checked\"</IF> /></label>\r\n <label>{lang.NO}<input type=\"radio\" id=\"enable_userfile\" name=\"enable_userfile\" value=\"0\" <IF NAME=\"con.enable_userfile==0\"> checked=\"checked\"</IF> /></label>', 11, 'groups', 0, 0];
$config_values[] = ['mod_writer', '0', '<label>{lang.YES}<input type=\"radio\" id=\"mod_writer\" name=\"mod_writer\" value=\"1\" <IF NAME=\"con.mod_writer==1\"> checked=\"checked\"</IF> /></label>\r\n <label>{lang.NO}<input type=\"radio\" id=\"mod_writer\" name=\"mod_writer\" value=\"0\" <IF NAME=\"con.mod_writer==0\"> checked=\"checked\"</IF> /></label>\r\n [ {lang.MOD_WRITER_EX} ]', 12, 'advanced', 0, 0];
$config_values[] = ['max_storage', '0', '<input type=\"text\" id=\"max_storage\" name=\"max_storage\" value=\"{con.max_storage}\" size=\"20\" style=\"direction:ltr\" />', 11, 'groups', 0, 0];
// Cookies settings
$cookie_data = get_cookies_settings();
@@ -60,6 +61,7 @@ $config_values[] = ['thumbs_imgs', '1', '<input type=\"text\" id=\"thmb_dim_w\"
$config_values[] = ['write_imgs', '0' , '<label>{lang.YES}<input type=\"radio\" id=\"write_imgs\" name=\"write_imgs\" value=\"1\" <IF NAME=\"con.write_imgs==1\"> checked=\"checked\"</IF> /></label>\r\n <label>{lang.NO}<input type=\"radio\" id=\"write_imgs\" name=\"write_imgs\" value=\"0\" <IF NAME=\"con.write_imgs==0\"> checked=\"checked\"</IF> /></label>\r\n <br /><img src=\"{STAMP_IMG_URL}\" alt=\"Seal photo\" style=\"margin-top:4px;border:1px groove #FF865E;\" />\r\n ', 28, 'groups', 0, 0];
$config_values[] = ['livexts', 'swf', '<input type=\"text\" id=\"livexts\" name=\"livexts\" value=\"{con.livexts}\" size=\"62\" style=\"direction:ltr\" />{lang.COMMA_X}', '29', 'upload', 0, 0];
$config_values[] = ['usersectoupload', '10', '<input type=\"text\" id=\"usersectoupload\" name=\"usersectoupload\" value=\"{con.usersectoupload}\" size=\"10\" />', 44, 'groups', 0, 0];
$config_values[] = ['enable_multipart', '1' , '<label>{lang.YES}<input type=\"radio\" id=\"enable_multipart\" name=\"enable_multipart\" value=\"1\" <IF NAME=\"con.enable_multipart==1\"> checked=\"checked\"</IF> /></label>\r\n <label>{lang.NO}<input type=\"radio\" id=\"enable_multipart\" name=\"enable_multipart\" value=\"0\" <IF NAME=\"con.enable_multipart==0\"> checked=\"checked\"</IF> /></label>', 45, 'groups', 0, 0];
$config_values[] = ['filesnum_show', '1', '<label>{lang.YES}<input type=\"radio\" id=\"filesnum_show\" name=\"filesnum_show\" value=\"1\" <IF NAME=\"con.filesnum_show==1\"> checked=\"checked\"</IF> /></label>\r\n <label>{lang.NO}<input type=\"radio\" id=\"filesnum_show\" name=\"filesnum_show\" value=\"0\" <IF NAME=\"con.filesnum_show==0\"> checked=\"checked\"</IF> /></label>', 22, 'upload', 0, 0];
//KLIVE
@@ -81,15 +83,15 @@ $config_values[] = ['thmb_dims', '100*100', '', 0, 0, 0];
$config_values[] = ['style', 'bootstrap', '', 0, '0', 0, 0];
$config_values[] = ['new_version', '', '', 0, 0, 0];
$config_values[] = ['db_version', KLEEJA_DB_VERSION, '', 0, 0, 0];
$config_values[] = ['last_online_time_update', time(), '', 0, 0, 1];
$config_values[] = ['klj_clean_files_from', '0', '', 0, 0, 1];
$config_values[] = ['last_online_time_update', time(), '', 0, 0, 0];
$config_values[] = ['klj_clean_files_from', '0', '', 0, 0, 0];
$config_values[] = ['style_depend_on', '', '', 0, 0, 0];
$config_values[] = ['most_user_online_ever', '', '', 0, 0, 1];
$config_values[] = ['expand_menu', '0', '', 0, 0, 1];
$config_values[] = ['firstime', '0', '', 0, 0, 1];
$config_values[] = ['most_user_online_ever', '', '', 0, 0, 0];
$config_values[] = ['expand_menu', '0', '', 0, 0, 0];
$config_values[] = ['firstime', '0', '', 0, 0, 0];
$config_values[] = ['ftp_info', '', '', 0, 0, 0];
$config_values[] = ['queue', '', '', 0, 0, 1];
$config_values[] = ['default_group', '3', '', 0, 0, 1];
$config_values[] = ['queue', '', '', 0, 0, 0];
$config_values[] = ['default_group', '3', '', 0, 0, 0];
//
// Extensions

View File

@@ -65,7 +65,7 @@ function getjquerylink()
/**
* Parsing installing templates
* @param mixed $tplname
* @param mixed $tplname
*/
function gettpl($tplname)
{
@@ -108,19 +108,20 @@ function kleeja_eval($code)
/**
* Export config
* @param mixed $srv
* @param mixed $usr
* @param mixed $pass
* @param mixed $nm
* @param mixed $prf
* @param mixed $srv
* @param mixed $usr
* @param mixed $pass
* @param mixed $nm
* @param mixed $prf
* @param mixed $type
*/
function do_config_export($srv, $usr, $pass, $nm, $prf, $type = 'mysql')
function do_config_export($srv, $usr, $pass, $nm, $prf, $type = 'mysqli')
{
$data = '<?php' . "\n\n" . '//fill these variables with your data' . "\n";
$data .= '//for more information about this file, visit: ' . "\n";
$data .= '//https://github.com/kleeja-official/kleeja/wiki/config.php-file' . "\n\n";
if(!empty($type) && $type != 'mysql')
if (! empty($type) && $type != 'mysqli')
{
if ($type == 'sqlite' && strpos($nm, '.') === false)
{
@@ -168,7 +169,7 @@ function get_microtime()
/**
* Get config value from database directly, if not return false.
* @param mixed $name
* @param mixed $name
*/
function inst_get_config($name)
{
@@ -183,7 +184,7 @@ function inst_get_config($name)
return false;
}
if(isset($dbtype) && $dbtype == 'sqlite')
if (isset($dbtype) && $dbtype == 'sqlite')
{
@touch(PATH . $dbname);
}

View File

@@ -89,6 +89,7 @@ CREATE TABLE `{$dbprefix}users` (
`show_my_filecp` tinyint(1) unsigned NOT NULL default '1',
`new_password` varchar(200) COLLATE utf8_bin NOT NULL DEFAULT '',
`hash_key` varchar(200) COLLATE utf8_bin NOT NULL DEFAULT '',
`storage_size` bigint(20) NOT NULL DEFAULT '0',
KEY `clean_name` (`clean_name`(300)),
KEY `group_id` (`group_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
@@ -100,6 +101,7 @@ CREATE TABLE `{$dbprefix}files` (
`last_down` int(11) unsigned NOT NULL DEFAULT '0',
`name` varchar(300) collate utf8_bin NOT NULL DEFAULT '',
`real_filename` VARCHAR( 350 ) collate utf8_bin NOT NULL DEFAULT '',
`about` LONGTEXT collate utf8_bin,
`size` bigint(20) unsigned NOT NULL DEFAULT '0',
`uploads` int(11) unsigned NOT NULL DEFAULT '0',
`time` int(11) unsigned NOT NULL DEFAULT '0',
@@ -218,7 +220,7 @@ CREATE TABLE `{$dbprefix}filters` (
$install_sqls['stats_insert'] = "INSERT INTO `{$dbprefix}stats` VALUES (0,0,1,0,0," . time() . ",0,0,0,0,'',0,0,0,0,'','','','')";
$install_sqls['users_insert'] = "INSERT INTO `{$dbprefix}users` (`id`,`name`,`group_id`,`password`,`password_salt`,`mail`,`founder`,`clean_name`) VALUES (1,'" . $user_name . "', 1, '" . $user_pass . "','" . $user_salt . "', '" . $user_mail . "', 1,'" . $clean_name . "')";
$install_sqls['TeamMsg_insert'] = "INSERT INTO `{$dbprefix}call` (`name`,`text`,`mail`,`time`,`ip`) VALUES ('" . $SQL->escape($lang['KLEEJA_TEAM_MSG_NAME']) . "', '" . $SQL->escape($lang['KLEEJA_TEAM_MSG_TEXT']) . "','info@kleeja.net', " . time() . ", '127.0.0.1')";
$install_sqls['TeamMsg_insert'] = "INSERT INTO `{$dbprefix}call` (`name`,`text`,`mail`,`time`,`ip`) VALUES ('" . $SQL->escape($lang['KLEEJA_TEAM_MSG_NAME']) . "', '" . $SQL->real_escape(nl2br($lang['KLEEJA_TEAM_MSG_TEXT'])) . "','info@kleeja.net', " . time() . ", '127.0.0.1')";
$install_sqls['groups_insert'] = "INSERT INTO `{$dbprefix}groups` (`group_id`, `group_name`, `group_is_default`, `group_is_essential`) VALUES
(1, '{lang.ADMINS}', 0, 1),
(2, '{lang.GUESTS}', 0, 1),

View File

@@ -32,3 +32,12 @@ $update_schema[9]['sql'] = [
// function () {
// },
// ];
$update_schema[10]['sql'] = [
'about_files' => "ALTER TABLE `{$dbprefix}files` ADD `about` LONGTEXT NULL DEFAULT NULL AFTER `real_filename`;",
'enable_multipart' => "INSERT INTO `{$dbprefix}groups_data` (`group_id`, `name`, `value`) SELECT `group_id`, 'enable_multipart', 1 FROM `{$dbprefix}groups`;",
'user_storage_size' => "ALTER TABLE `{$dbprefix}users` ADD `storage_size` bigint(20) NOT NULL DEFAULT '0' AFTER `hash_key`;",
'group_max_storage' => "INSERT INTO `{$dbprefix}groups_data` (`group_id`, `name`, `value`) SELECT `group_id`, 'max_storage', 0 FROM `{$dbprefix}groups`;",
'multipart_config' => 'INSERT INTO `' . $dbprefix . 'config` (`name`, `value`, `option`, `display_order`, `type`, `plg_id`, `dynamic`) VALUES (\'enable_multipart\', 1, \'<label>{lang.YES}<input type=\"radio\" id=\"enable_multipart\" name=\"enable_multipart\" value=\"1\" <IF NAME=\"con.enable_multipart==1\"> checked=\"checked\"</IF> /></label>\r\n <label>{lang.NO}<input type=\"radio\" id=\"enable_multipart\" name=\"enable_multipart\" value=\"0\" <IF NAME=\"con.enable_multipart==0\"> checked=\"checked\"</IF> /></label>\', 45, \'groups\', 0, 0);',
'max_storage_config' => 'INSERT INTO `' . $dbprefix . 'config` (`name`, `value`, `option`, `display_order`, `type`, `plg_id`, `dynamic`) VALUES (\'max_storage\', 0, \'<input type=\"text\" id=\"max_storage\" name=\"max_storage\" value=\"{con.max_storage}\" size=\"20\" style=\"direction:ltr\" />\', 11, \'groups\', 0, 0);',
];

View File

@@ -76,61 +76,61 @@ if (! ip('lang'))
*/
switch (g('step', 'str'))
{
default:
case 'language':
default:
case 'language':
if (ig('ln'))
{
echo '<meta http-equiv="refresh" content="0;url=./?step=what_is_kleeja&lang=' . g('ln', 'str', 'en') . '">';
exit;
}
echo gettpl('lang.html');
break;
case 'what_is_kleeja':
echo gettpl('what_is_kleeja.html');
break;
case 'official':
echo gettpl('official.html');
break;
case 'choose' :
$install_or_no = $php_ver = true;
//check version of PHP
if (! function_exists('version_compare')
|| version_compare(PHP_VERSION, MIN_PHP_VERSION, '<'))
{
$php_ver = false;
}
if (file_exists(PATH . 'config.php'))
{
include_once PATH . 'config.php';
if (! empty($dbuser) && ! empty($dbname))
if (ig('ln'))
{
$d = inst_get_config('language');
echo '<meta http-equiv="refresh" content="0;url=./?step=what_is_kleeja&lang=' . g('ln', 'str', 'en') . '">';
if (! empty($d))
exit;
}
echo gettpl('lang.html');
break;
case 'what_is_kleeja':
echo gettpl('what_is_kleeja.html');
break;
case 'official':
echo gettpl('official.html');
break;
case 'choose' :
$install_or_no = $php_ver = true;
//check version of PHP
if (! function_exists('version_compare')
|| version_compare(PHP_VERSION, MIN_PHP_VERSION, '<'))
{
$php_ver = false;
}
if (file_exists(PATH . 'config.php'))
{
include_once PATH . 'config.php';
if (! empty($dbuser) && ! empty($dbname))
{
$install_or_no = false;
$d = inst_get_config('language');
if (! empty($d))
{
$install_or_no = false;
}
}
}
}
echo gettpl('choose.html');
echo gettpl('choose.html');
break;
break;
}

View File

@@ -83,10 +83,10 @@ else
// //navigate ..
switch (g('step'))
{
default:
case 'license':
default:
case 'license':
$contentof_license = 'GPL version 2
$contentof_license = 'GPL version 2
GNU General Public License, Free Software Foundation
The GNU General Public License is a Free Software license. Like any Free Software license, it grants to you the four following freedoms:
1. The freedom to run the program for any purpose.
@@ -98,331 +98,332 @@ You must conspicuously and appropriately publish on each copy distributed an app
If you modify your copy or copies of the program or any portion of it, or develop a program based upon it, you may distribute the resulting work provided you do so under the GNU General Public License. Any translation of the GNU General Public License must be accompanied by the GNU General Public License.
If you copy or distribute the program, you must accompany it with the complete corresponding machine-readable source code or with a written offer, valid for at least three years, to furnish the complete corresponding machine-readable source code.
Any of the above conditions can be waived if you get permission from the copyright holder.';
$contentof_license = nl2br($contentof_license);
echo gettpl('license.html');
$contentof_license = nl2br($contentof_license);
echo gettpl('license.html');
break;
break;
case 'f':
case 'f':
$check_ok = true;
$advices = $ziparchive_lib = false;
$check_ok = true;
$advices = $ziparchive_lib = false;
if (! class_exists('ZipArchive'))
{
$ziparchive_lib = true;
}
if ($ziparchive_lib)
{
$advices = true;
}
echo gettpl('check.html');
break;
case 'c':
// after submit, generate config file
if (ip('dbsubmit'))
{
//create config file, or export it to browser on failure
do_config_export(p('db_server'), p('db_user'), p('db_pass'), p('db_name'), p('db_prefix'), p('db_type'));
}
$no_config = ! file_exists(PATH . 'config.php') || ig('force') ? false : true;
$writeable_path = is_writable(PATH) ? true : false;
$sqlite3_exists = class_exists('SQLite3');
echo gettpl('configs.html');
break;
case 'check':
$submit_disabled = $no_connection = $mysql_ver = false;
//config.php
if (! empty($dbname))
{
if (isset($dbtype) && $dbtype == 'sqlite')
if (! class_exists('ZipArchive'))
{
@touch(PATH . $dbname);
$ziparchive_lib = true;
}
//connect .. for check
$SQL = new KleejaDatabase($dbserver, $dbuser, $dbpass, $dbname, $dbprefix);
if (! $SQL->is_connected())
if ($ziparchive_lib)
{
$no_connection = true;
$advices = true;
}
else
echo gettpl('check.html');
break;
case 'c':
// after submit, generate config file
if (ip('dbsubmit'))
{
if (defined('SQL_LAYER') && SQL_LAYER == 'mysqli')
//create config file, or export it to browser on failure
do_config_export(p('db_server'), p('db_user'), p('db_pass'), p('db_name'), p('db_prefix'), p('db_type'));
}
$no_config = ! file_exists(PATH . 'config.php') || ig('force') ? false : true;
$writeable_path = is_writable(PATH) ? true : false;
$sqlite3_exists = class_exists('SQLite3');
echo gettpl('configs.html');
break;
case 'check':
$submit_disabled = $no_connection = $mysql_ver = false;
//config.php
if (! empty($dbname))
{
if (isset($dbtype) && $dbtype == 'sqlite')
{
if (! empty($SQL->version()) && version_compare($SQL->version(), MIN_MYSQL_VERSION, '<'))
{
$mysql_ver = $SQL->version();
}
}
}
}
//try to chmod them
if (function_exists('chmod'))
{
@chmod(PATH . 'cache', 0755);
@chmod(PATH . 'plugins', 0755);
@chmod(PATH . 'styles', 0755);
@chmod(PATH . 'uploads', 0755);
@chmod(PATH . 'uploads/thumbs', 0755);
}
echo gettpl('check_all.html');
break;
case 'data' :
if (ip('datasubmit'))
{
//check data ...
if (empty(p('sitename')) || empty(p('siteurl')) || empty(p('sitemail'))
|| empty(p('username')) || empty(p('password')) || empty(p('password2')) || empty(p('email')))
{
echo $lang['EMPTY_FIELDS'];
echo $footer_inst;
exit();
}
//fix bug #r1777 (alta3rq revision)
if (! empty(p('password')) && ! empty(p('password2')) && p('password') != p('password2'))
{
echo $lang['PASS_NEQ_PASS2'];
echo $footer_inst;
exit();
}
if (strpos(p('email'), '@') === false)
{
echo $lang['WRONG_EMAIL'];
echo $footer_inst;
exit();
}
//connect .. for check
$SQL = new KleejaDatabase($dbserver, $dbuser, $dbpass, $dbname, $dbprefix);
include_once PATH . 'includes/usr.php';
include_once PATH . 'includes/functions_alternative.php';
$usrcp = new usrcp;
$user_salt = substr(base64_encode(pack('H*', sha1(mt_rand()))), 0, 7);
$user_pass = $usrcp->kleeja_hash_password(p('password') . $user_salt);
$user_name = $SQL->escape(p('username'));
$user_mail = $SQL->escape(p('email'));
$config_sitename = $SQL->escape(p('sitename'));
$config_siteurl = $SQL->escape(p('siteurl'));
$config_sitemail = $SQL->escape(p('sitemail'));
$config_time_zone = $SQL->escape(p('time_zone'));
//$config_style = ip('style') ? $SQL->escape(p('style')) : '';
$config_urls_type = in_array(p('urls_type'), ['id', 'filename', 'direct']) ? p('urls_type') : 'id';
$clean_name = $usrcp->cleanusername($SQL->escape($user_name));
/// ok .. we will get sqls now ..
include 'includes/install_sqls.php';
include 'includes/default_values.php';
$err = $dots = 0;
$errors = '';
//do important alter before
$SQL->query($install_sqls['ALTER_DATABASE_UTF']);
$sqls_done = $sql_err = [];
foreach ($install_sqls as $name=>$sql_content)
{
if ($name == 'DROP_TABLES' || $name == 'ALTER_DATABASE_UTF')
{
continue;
@touch(PATH . $dbname);
}
if ($SQL->query($sql_content))
//connect .. for check
$SQL = new KleejaDatabase($dbserver, $dbuser, $dbpass, $dbname, $dbprefix);
if (! $SQL->is_connected())
{
if ($name == 'call')
{
$sqls_done[] = $lang['INST_CRT_CALL'];
}
elseif ($name == 'reports')
{
$sqls_done[] = $lang['INST_CRT_REPRS'];
}
elseif ($name == 'stats')
{
$sqls_done[] = $lang['INST_CRT_STS'];
}
elseif ($name == 'users')
{
$sqls_done[] = $lang['INST_CRT_USRS'];
}
elseif ($name == 'users')
{
$sqls_done[] = $lang['INST_CRT_ADM'];
}
elseif ($name == 'files')
{
$sqls_done[] = $lang['INST_CRT_FLS'];
}
elseif ($name == 'config')
{
$sqls_done[] = $lang['INST_CRT_CNF'];
}
elseif ($name == 'exts')
{
$sqls_done[] = $lang['INST_CRT_EXT'];
}
elseif ($name == 'online')
{
$sqls_done[] = $lang['INST_CRT_ONL'];
}
elseif ($name == 'hooks')
{
$sqls_done[] = $lang['INST_CRT_HKS'];
}
elseif ($name == 'plugins')
{
$sqls_done[] = $lang['INST_CRT_PLG'];
}
elseif ($name == 'lang')
{
$sqls_done[] = $lang['INST_CRT_LNG'];
}
else
{
$sqls_done[] = $name . '...';
}
$no_connection = true;
}
else
{
$errors .= implode(':', $SQL->get_error()) . '' . "\n___\n";
$sql_err[] = $lang['INST_SQL_ERR'] . ' : ' . $name . '[basic]';
$err++;
if (defined('SQL_LAYER') && SQL_LAYER == 'mysqli')
{
if (! empty($SQL->version()) && version_compare($SQL->version(), MIN_MYSQL_VERSION, '<'))
{
$mysql_ver = $SQL->version();
}
}
}
}//for
}
if ($err == 0)
//try to chmod them
if (function_exists('chmod'))
{
//add configs
foreach ($config_values as $cn)
@chmod(PATH . 'cache', 0755);
@chmod(PATH . 'plugins', 0755);
@chmod(PATH . 'styles', 0755);
@chmod(PATH . 'uploads', 0755);
@chmod(PATH . 'uploads/thumbs', 0755);
}
echo gettpl('check_all.html');
break;
case 'data' :
if (ip('datasubmit'))
{
//check data ...
if (empty(p('sitename')) || empty(p('siteurl')) || empty(p('sitemail'))
|| empty(p('username')) || empty(p('password')) || empty(p('password2')) || empty(p('email')))
{
if (empty($cn[6]))
{
$cn[6] = 0;
}
echo $lang['EMPTY_FIELDS'];
echo gettpl('footer.html');
$sql = "INSERT INTO `{$dbprefix}config` (`name`, `value`, `option`, `display_order`, `type`, `plg_id`, `dynamic`) VALUES ('$cn[0]', '$cn[1]', '$cn[2]', '$cn[3]', '$cn[4]', '$cn[5]', '$cn[6]');";
if (! $SQL->query($sql))
{
$errors .= implode(':', $SQL->get_error()) . '' . "\n___\n";
$sql_err[] = $lang['INST_SQL_ERR'] . ' : [configs_values] ' . $cn;
$err++;
}
exit();
}
//add groups configs
foreach ($config_values as $cn)
//fix bug #r1777 (alta3rq revision)
if (! empty(p('password')) && ! empty(p('password2')) && p('password') != p('password2'))
{
if ($cn[4] != 'groups' or ! $cn[4])
echo $lang['PASS_NEQ_PASS2'];
echo gettpl('footer.html');
exit();
}
if (strpos(p('email'), '@') === false)
{
echo $lang['WRONG_EMAIL'];
echo gettpl('footer.html');
exit();
}
//connect .. for check
$SQL = new KleejaDatabase($dbserver, $dbuser, $dbpass, $dbname, $dbprefix);
include_once PATH . 'includes/usr.php';
include_once PATH . 'includes/functions_alternative.php';
$usrcp = new usrcp;
$user_salt = substr(base64_encode(pack('H*', sha1(mt_rand()))), 0, 7);
$user_pass = $usrcp->kleeja_hash_password(p('password') . $user_salt);
$user_name = $SQL->escape(p('username'));
$user_mail = $SQL->escape(p('email'));
$config_sitename = $SQL->escape(p('sitename'));
$config_siteurl = $SQL->escape(p('siteurl'));
$config_sitemail = $SQL->escape(p('sitemail'));
$config_time_zone = $SQL->escape(p('time_zone'));
//$config_style = ip('style') ? $SQL->escape(p('style')) : '';
$config_urls_type = in_array(p('urls_type'), ['id', 'filename', 'direct']) ? p('urls_type') : 'id';
$clean_name = $usrcp->cleanusername($SQL->escape($user_name));
/// ok .. we will get sqls now ..
include 'includes/install_sqls.php';
include 'includes/default_values.php';
$err = $dots = 0;
$errors = '';
//do important alter before
$SQL->query($install_sqls['ALTER_DATABASE_UTF']);
$sqls_done = $sql_err = [];
foreach ($install_sqls as $name=>$sql_content)
{
if ($name == 'DROP_TABLES' || $name == 'ALTER_DATABASE_UTF')
{
continue;
}
$itxt = '';
foreach ([1, 2, 3] as $im)
if ($SQL->query($sql_content))
{
$itxt .= ($itxt == '' ? '' : ',') . "($im, '$cn[0]', '$cn[1]')";
if ($name == 'call')
{
$sqls_done[] = $lang['INST_CRT_CALL'];
}
elseif ($name == 'reports')
{
$sqls_done[] = $lang['INST_CRT_REPRS'];
}
elseif ($name == 'stats')
{
$sqls_done[] = $lang['INST_CRT_STS'];
}
elseif ($name == 'users')
{
$sqls_done[] = $lang['INST_CRT_USRS'];
}
elseif ($name == 'users')
{
$sqls_done[] = $lang['INST_CRT_ADM'];
}
elseif ($name == 'files')
{
$sqls_done[] = $lang['INST_CRT_FLS'];
}
elseif ($name == 'config')
{
$sqls_done[] = $lang['INST_CRT_CNF'];
}
elseif ($name == 'exts')
{
$sqls_done[] = $lang['INST_CRT_EXT'];
}
elseif ($name == 'online')
{
$sqls_done[] = $lang['INST_CRT_ONL'];
}
elseif ($name == 'hooks')
{
$sqls_done[] = $lang['INST_CRT_HKS'];
}
elseif ($name == 'plugins')
{
$sqls_done[] = $lang['INST_CRT_PLG'];
}
elseif ($name == 'lang')
{
$sqls_done[] = $lang['INST_CRT_LNG'];
}
else
{
$sqls_done[] = $name . '...';
}
}
$sql = "INSERT INTO `{$dbprefix}groups_data` (`group_id`, `name`, `value`) VALUES " . $itxt . ';';
if (! $SQL->query($sql))
else
{
$errors .= implode(':', $SQL->get_error()) . '' . "\n___\n";
$sql_err[] = $lang['INST_SQL_ERR'] . ' : [groups_configs_values] ' . $cn;
$sql_err[] = $lang['INST_SQL_ERR'] . ' : ' . $name . '[basic]';
$err++;
}
}
}//for
//add exts
foreach ($ext_values as $gid=>$exts)
if ($err == 0)
{
$itxt = '';
foreach ($exts as $t=>$v)
//add configs
foreach ($config_values as $cn)
{
$itxt .= ($itxt == '' ? '' : ',') . "('$t', $gid, $v)";
if (empty($cn[6]))
{
$cn[6] = 0;
}
$sql = "INSERT INTO `{$dbprefix}config` (`name`, `value`, `option`, `display_order`, `type`, `plg_id`, `dynamic`) VALUES ('$cn[0]', '$cn[1]', '$cn[2]', '$cn[3]', '$cn[4]', '$cn[5]', '$cn[6]');";
if (! $SQL->query($sql))
{
$errors .= implode(':', $SQL->get_error()) . '' . "\n___\n";
$sql_err[] = $lang['INST_SQL_ERR'] . ' : [configs_values] ' . $cn;
$err++;
}
}
$sql = "INSERT INTO `{$dbprefix}groups_exts` (`ext`, `group_id`, `size`) VALUES " . $itxt . ';';
if (! $SQL->query($sql))
//add groups configs
foreach ($config_values as $cn)
{
$errors .= implode(':', $SQL->get_error()) . '' . "\n___\n";
$sql_err[] = $lang['INST_SQL_ERR'] . ' : [ext_values] ' . $gid;
$err++;
if ($cn[4] != 'groups' or ! $cn[4])
{
continue;
}
$itxt = '';
foreach ([1, 2, 3] as $im)
{
$itxt .= ($itxt == '' ? '' : ',') . "($im, '$cn[0]', '$cn[1]')";
}
$sql = "INSERT INTO `{$dbprefix}groups_data` (`group_id`, `name`, `value`) VALUES " . $itxt . ';';
if (! $SQL->query($sql))
{
$errors .= implode(':', $SQL->get_error()) . '' . "\n___\n";
$sql_err[] = $lang['INST_SQL_ERR'] . ' : [groups_configs_values] ' . $cn;
$err++;
}
}
}
//add acls
foreach ($acls_values as $cn=>$ct)
{
$it = 1;
$itxt = '';
foreach ($ct as $ctk)
//add exts
foreach ($ext_values as $gid=>$exts)
{
$itxt .= ($itxt == '' ? '' : ',') . "('$cn', '$it', '$ctk')";
$itxt = '';
foreach ($exts as $t=>$v)
{
$itxt .= ($itxt == '' ? '' : ',') . "('$t', $gid, $v)";
}
$sql = "INSERT INTO `{$dbprefix}groups_exts` (`ext`, `group_id`, `size`) VALUES " . $itxt . ';';
if (! $SQL->query($sql))
{
$errors .= implode(':', $SQL->get_error()) . '' . "\n___\n";
$sql_err[] = $lang['INST_SQL_ERR'] . ' : [ext_values] ' . $gid;
$err++;
}
}
//add acls
foreach ($acls_values as $cn=>$ct)
{
$it = 1;
$itxt = '';
foreach ($ct as $ctk)
{
$itxt .= ($itxt == '' ? '' : ',') . "('$cn', '$it', '$ctk')";
$it++;
}
$sql = "INSERT INTO `{$dbprefix}groups_acl` (`acl_name`, `group_id`, `acl_can`) VALUES " . $itxt . ';';
if (! $SQL->query($sql))
{
$errors .= implode(':', $SQL->get_error()) . '' . "\n___\n";
$sql_err[] = $lang['INST_SQL_ERR'] . ' : [acl_values] ' . $cn;
$err++;
}
$it++;
}
$sql = "INSERT INTO `{$dbprefix}groups_acl` (`acl_name`, `group_id`, `acl_can`) VALUES " . $itxt . ';';
if (! $SQL->query($sql))
{
$errors .= implode(':', $SQL->get_error()) . '' . "\n___\n";
$sql_err[] = $lang['INST_SQL_ERR'] . ' : [acl_values] ' . $cn;
$err++;
}
$it++;
}
echo gettpl('sqls_done.html');
}
else
{
$urlsite = 'http://' . $_SERVER['HTTP_HOST'] . str_replace('install', '', dirname($_SERVER['PHP_SELF']));
echo gettpl('data.html');
}
echo gettpl('sqls_done.html');
}
else
{
$urlsite = 'http://' . $_SERVER['HTTP_HOST'] . str_replace('install', '', dirname($_SERVER['PHP_SELF']));
echo gettpl('data.html');
}
break;
break;
case 'end' :
case 'end' :
echo gettpl('end.html');
//for safe ..
//@rename("install.php", "install.lock");
break;
break;
}

View File

@@ -9,8 +9,8 @@
<td class="TdConf">{{echo $lang['DB_TYPE']}}</td>
<td class="TdInput">
<select name="db_type" id="db_type" style="text-align:left;direction:ltr">
<option value="mysql" selected>{{echo $lang['DB_TYPE_MYSQL']}}</option>
{{if ($sqlite3_exists):}}
<option value="mysqli" selected>{{echo $lang['DB_TYPE_MYSQLI']}}</option>
{{if ($GLOBALS['sqlite3_exists']):}}
<option value="sqlite">{{echo $lang['DB_TYPE_SQLITE']}}</option>
{{endif;}}
</select>

View File

@@ -51,7 +51,7 @@
<td>
<select name="time_zone" id="time_zone" style="text-align:left;direction:ltr">
{{foreach(time_zones() as $z=>$t):}}
<option value="{{echo $z}}" {{if($z=='Asia/Buraydah'):}}selected="selected"{{endif;}}>{{echo $z}} (GMT{{echo $t < 0 ? $t : '+' . $t}}</option>
<option value="{{echo $z}}" {{if($z=='Asia/Buraydah'):}}selected="selected"{{endif;}}>{{echo $z}} (GMT{{echo $t < 0 ? $t : '+' . $t}})</option>
{{endforeach}}
</select>
</td>

View File

Before

Width:  |  Height:  |  Size: 48 KiB

After

Width:  |  Height:  |  Size: 48 KiB

View File

@@ -303,7 +303,7 @@ ul.headerIcon li a img {
width: 960px;
margin: 50px auto 10px auto;
padding-top: 20px;
background: url('style/images/{{echo $GLOBALS['IN_UPDATE'] ? 'logo2.gif':'logo.gif';}}') no-repeat center 20px;
background: url('style/images/{{echo !empty($GLOBALS['IN_UPDATE']) ? 'logo2.gif':'logo.gif';}}') no-repeat center 20px;
}
.BoxInner {
width: 680px;

View File

@@ -4,25 +4,15 @@
{{foreach($GLOBALS['update_msgs_arr'] as $m):}}
<li><img src="style/images/ok.png" class="img" alt="ok" /> {{echo $m}}</li>
{{endforeach;}}
{{if(is_array($GLOBALS['NOTES_CUP'])):foreach($GLOBALS['NOTES_CUP'] as $i=>$m):}}
<li><img src="style/images/ok.png" class="img" alt="ok" />{{echo $i;}} - {{echo $m}} </li>
{{endforeach;endif;}}
</ul>
</div>
<div class="clr"></div>
{{if($GLOBALS['complete_upate']):}}
{{if($GLOBALS['complete_update']):}}
<div class="hr"></div>
<div class="notice">
<h6><img src="style/images/info2.png" class="img" alt="" /> {{echo $lang['INST_NOTES_UPDATE']}} :</h6>
<p><img src="style/images/inst_notes.png" class="img" alt="" />{{echo $lang['INST_NOTE_RC6_TO_1.0.0']}}</p>
<h6><img src="style/images/info2.png" class="img" alt="" /> {{echo $lang['KLEEJA_TEAM_MSG_NAME']}}</h6>
<p><img src="style/images/inst_notes.png" class="img" alt="" />{{echo $lang['KLEEJA_TEAM_MSG_TEXT']}}</p>
</div>
{{if(is_array($GLOBALS['NOTES_CUP'])):foreach($GLOBALS['NOTES_CUP'] as $i=>$m):}}
<div id="Scro11">
<ul class="inside">
<li><img src="style/images/ok.png" class="img" alt="ok" />{{echo $i;}} - {{echo $m}} </li>
</ul>
</div>
{{endforeach;endif;}}
{{else:}}
<div class="notice TN">
<p>{{echo $lang['INST_UPDATE_IS_FINISH']}}</p>
@@ -46,4 +36,4 @@ jQuery(document).ready(function($){
}
});
//-->
</script>
</script>

View File

@@ -71,83 +71,84 @@ if (! ip('action_file_do'))
*/
switch (g('step', 'str', 'action_file'))
{
default:
case 'update_now':
default:
case 'update_now':
$complete_update = true;
$update_msgs_arr = [];
$current_db_version = $config['db_version'];
$complete_update = true;
$update_msgs_arr = [];
$current_db_version = $config['db_version'];
$all_db_updates = array_keys($update_schema);
$all_db_updates = array_keys($update_schema);
$available_db_updates = array_filter($all_db_updates, function ($v) use ($current_db_version) {
return $v > $current_db_version;
});
$available_db_updates = array_filter($all_db_updates, function ($v) use ($current_db_version) {
return $v > $current_db_version;
});
sort($available_db_updates);
sort($available_db_updates);
if (! sizeof($available_db_updates))
{
$update_msgs_arr[] = '<span style="color:green;">' . $lang['INST_UPDATE_CUR_VER_IS_UP'] . '</span>';
$complete_update = false;
}
//
//is there any sqls
//
if ($complete_update)
{
//loop through available updates
foreach ($available_db_updates as $db_update_version)
if (! sizeof($available_db_updates))
{
$SQL->show_errors = false;
$update_msgs_arr[] = '<span style="color:green;">' . $lang['INST_UPDATE_CUR_VER_IS_UP'] . '</span>';
$complete_update = false;
}
//sqls
if (isset($update_schema[$db_update_version]['sql'])
&& sizeof($update_schema[$db_update_version]['sql']) > 0)
//
//is there any sqls
//
if ($complete_update)
{
//loop through available updates
foreach ($available_db_updates as $db_update_version)
{
$err = '';
$SQL->hideErrors();
$complete_update = true;
foreach ($update_schema[$db_update_version]['sql'] as $name=>$sql_content)
//sqls
if (isset($update_schema[$db_update_version]['sql'])
&& sizeof($update_schema[$db_update_version]['sql']) > 0)
{
$err = '';
$SQL->query($sql_content);
$err = $SQL->get_error();
if (strpos($err[1], 'Duplicate') !== false || $err[0] == '1062' || $err[0] == '1060')
{
$complete_update = false;
}
}
}
$complete_update = true;
//functions
if ($complete_update)
{
if (isset($update_schema[$db_update_version]['functions']) && sizeof($update_schema[$db_update_version]['functions']) > 0)
{
foreach ($update_schema[$db_update_version]['functions'] as $n)
foreach ($update_schema[$db_update_version]['sql'] as $name=>$sql_content)
{
if (is_callable($n))
$err = '';
$SQL->query($sql_content);
$err = $SQL->get_error();
if (strpos($err[1], 'Duplicate') !== false || $err[0] == '1062' || $err[0] == '1060')
{
$n();
$complete_update = false;
}
}
}
//functions
if ($complete_update)
{
if (isset($update_schema[$db_update_version]['functions']) && sizeof($update_schema[$db_update_version]['functions']) > 0)
{
foreach ($update_schema[$db_update_version]['functions'] as $n)
{
if (is_callable($n))
{
$n();
}
}
}
}
$sql = "UPDATE `{$dbprefix}config` SET `value` = '" . KLEEJA_DB_VERSION . "' WHERE `name` = 'db_version'";
$SQL->query($sql);
$update_msgs_arr[] = '<span style="color:green;">' . $lang['INST_UPDATE_IS_FINISH'] . '</span>';
}
$sql = "UPDATE `{$dbprefix}config` SET `value` = '" . UPDATE_DB_VERSION . "' WHERE `name` = 'db_version'";
$SQL->query($sql);
}
}
delete_cache('', true);
echo gettpl('update_end.html');
delete_cache('', true);
echo gettpl('update_end.html');
break;
break;
}
/**

View File

@@ -103,6 +103,7 @@ return [
'SEARCH_USERS' => 'بحث عن مستخدمين',
'R_IMG_CTRL' => 'إدارة الصور',
'ENABLE_USERFILE' => 'تفعيل مجلدات المستخدمين',
'MAX_STORAGE' => 'الحد الأقصى للتخزين (بايت)',
'R_EXTRA' => 'هيدر وفوتر إضافي',
'EX_HEADER_N' => 'الهيدر الإضافي.. وهو ما يظهر أسفل الهيدر الأصلي ..',
'EX_FOOTER_N' => 'الفوتر الإضافي.. وهو ما يظهر أعلى الفوتر الأصلي ..',
@@ -183,10 +184,10 @@ return [
'COMMA_X' => '<p class="live_xts">افصل بين الامتدادات باستخدام الفاصلة (<span style="font-size:large"> , </span>)</p>',
'NO_SEARCH_WORD' => 'لم تقم بكتابة كلمة بحث !',
'USERSECTOUPLOAD' => 'عدد الثواني بين كل عملية رفع',
'ENABLE_MULTIPART' => 'تفعيل التنزيل متعدد الأجزاء',
'ADM_UNWANTED_FILES' => 'يبدوا انك قمت بالترقية من نسخة سابقة وبسبب اختلاف اسماء بعض الملفات ستلاحظ وجود ازرار متكررة بلوحة التحكم . <br /> لحل المشكلة قم بإزالة كافة الملفات في المسار "includes/adm" واعادة رفعها من جديد. ايضا قم بحذف ملف admin.php من المجلد الرئيسي اذا وجد.',
'HTML_URLS_ENABLED_NO_HTCC' => 'لقد قمت بتفعيل روابط الهتمل ولكنك نسيت أن تقوم بإعادة تسمية الملف htaccess.txt في مجلد كليجا الرئيسي ليصبح ".htaccess". اذا لم تفهم شيئاً من هذا الكلام قم بالسؤال في الدعم الفني لكليجا او قم بتعطيل روابط الهتمل .',
'PLUGIN_CONFIRM_ADD' => 'انتبه, الاضافات هي تعديلات برمجية على كليجا و قد تكون ضارة أحياناً , لذا ان كنت غير متأكد من مصدر الإضافة ولم تقم بتحميلها من موقع كليجا فالافضل ان تراجع نفسك الآن . ',
'LOADING' => 'جاري التنفيذ',
'WELCOME' => 'مرحباً',
'ENABLE_CAPTCHA' => 'تفعيل كود الامان بكليجا',
'NO_THUMB_FOLDER' => 'يبدو ان المصغرات مُفعلة لديك ولكن في نفس الوقت مجلد %s غير متوفر مما يمنع عملية انشاء المصغرات, قم بإنشاء المجلد.',
@@ -280,4 +281,8 @@ return [
'CANT_DEL_DEFAULT_STYLE' => 'لا يمكنك حذف الستايل الإفتراضي! قم بتعيين ستايل آخر لتستطيع حذفه.',
'NOTIFICATIONS' => 'تنبيهات',
'KJ_TWEETS' => 'تغريدات كليجا',
'DEL_BY_EXT' => 'حذف الملفات حسب الامتداد',
'SELECT_EXT' => 'حدد الامتداد',
'NO_FILE_WITH_EXT' => 'لا يوجد ملفات موجودة بالملحق المحدد',
'X_FILE_WITH_EXT' => 'يوجد (x) ملفات بالملحق المحدد',
];

View File

@@ -94,6 +94,8 @@ return [
'URL' => 'الرابط',
'REASON' => 'السبب',
'NO_ID' => 'لم تحدد ملف..!',
'TOTAL_SIZE_EXCEEDED' => 'لقد تم تجاوز الحجم الإجمالي',
'STORAGE_USAGE' => '<b>%s</b> من <b>%s</b>',
'NO_ME300RES' => 'رجاءً.. حقل السبب لا يمكن ملأه بأكثر من 300 حرف!',
'THNX_REPORTED' => 'تم التبليغ.. شكراً لاهتمامك',
'RULES' => 'شروط الخدمة',
@@ -116,6 +118,7 @@ return [
'IMAGE' => 'صورة',
'USERS_ST' => 'عدد الأعضاء',
'USER' => 'عضو',
'USED_SPACE' => 'المساحة المستخدمة',
'SIZES_ST' => 'حجم جميع الملفات',
//'LSTFLE_ST' => 'آخر ملف تم رفعه',
'LSTDELST' => 'آخر فحص للملفات الخاملة ',
@@ -218,6 +221,7 @@ return [
'ALL_FILES' => 'عدد جميع الملفات',
'ALL_IMAGES' => 'عدد جميع الصور',
'WAIT_LOADING' => 'فضلاً انتظر جاري رفع الملفات .....',
'LOADING' => 'جاري التنفيذ',
'NOTICECLOSED' => 'تنبيه : المركز في وضع الصيانة',
'UNKNOWN' => 'غير معروف',
'WE_UPDATING_KLEEJA_NOW' => 'الموقع مغلق للتطوير والترقية لاخر نسخة , لذا يرجى الصبر ...',
@@ -279,4 +283,7 @@ return [
'EMAIL_CHANGE_REQ_PASS' => 'لتغيير بريدك الإلكتروني يجب أن تقوم بكتابة كلمة مرورك الحالية.',
'DRAG_AND_DROP' => 'جر وأسقط ملف هنا للرفع&hellip;',
'OR_MANUAL_SELECT' => 'أو قم بالضغط هنا <em>لإختيار</em> ملف يدوياً..',
'ABOUT_FILE' => 'معلومات الملف',
'FILE_NO_INFO' => 'لم يتم العثور على معلومات حول هذا الملف',
'SAVE' => 'حفظ',
];

View File

@@ -57,7 +57,7 @@ return [
'DB_INFO' => 'أدخل معلومات قاعدة البيانات',
'DB_SERVER' => 'الخادم',
'DB_TYPE' => 'نوع قاعدة البيانات',
'DB_TYPE_MYSQL' => 'MySQL',
'DB_TYPE_MYSQLI' => 'MySQL Improved',
'DB_TYPE_SQLITE' => 'SQLite',
'DB_USER' => 'اسم المستخدم لقاعدة البيانات',
'DB_PASSWORD' => 'كلمة المرور لقاعدة البيانات',

View File

@@ -102,6 +102,7 @@ return [
'SEARCH_USERS' => 'Search for users',
'R_IMG_CTRL' => 'Image control only',
'ENABLE_USERFILE' => 'Enable users files',
'MAX_STORAGE' => 'Maximum storage (Bytes)',
'R_EXTRA' => 'Extra Templates',
'EX_HEADER_N' => 'Extra header ... which shows at the bottom of the original header',
'EX_FOOTER_N' => 'Extra footer ... which shows at the top of the original footer',
@@ -181,10 +182,10 @@ return [
'COMMA_X' => '<p class="live_xts">separate by comma (<span style="font-size:large"> , </span>)</p>',
'NO_SEARCH_WORD' => 'You didn\'t type anything in the search form !',
'USERSECTOUPLOAD' => 'The seconds between each upload process',
'ENABLE_MULTIPART' => 'Enable multipart download',
'ADM_UNWANTED_FILES' => 'You seem to have upgraded from a previous version, and because some file names are different now, you\'ll notice duplicated buttons in control panel. </ br> to solve this, remove all the files in "includes/adm" directory and re-upload them.',
'HTML_URLS_ENABLED_NO_HTCC' => 'you have enabled the rewrite URLs, but you seem to have forgot to rename .htaccess.txt in Kleeja\'s root directory to ".htaccess", however, if you don\'t know what I\'m talking about, go ask for Kleeja\'s support or simply disable the rewrite urls feature.',
'PLUGIN_CONFIRM_ADD' => 'Caution: plugins make changes to Kleeja functionality, and they could be harmful at times. so be sure to check the plugin source and make sure that it is an official Kleeja plugin.',
'LOADING' => 'Loading',
'WELCOME' => 'Welcome',
'ENABLE_CAPTCHA' => 'Enable Captcha in Kleeja',
'NO_THUMB_FOLDER' => 'It seems you enabled Thumbs but in same time the folder %s does not exist! create it.',
@@ -277,4 +278,8 @@ return [
'CANT_DEL_DEFAULT_STYLE' => 'You can not delete the current default style! choose another style to be the default then try again.',
'NOTIFICATIONS' => 'Notifications',
'KJ_TWEETS' => 'Kleeja Tweets',
'DEL_BY_EXT' => 'Delete Files By Extension',
'SELECT_EXT' => 'Select an Extension',
'NO_FILE_WITH_EXT' => 'there is no files exists with the selected extension',
'X_FILE_WITH_EXT' => 'there is (x) files exists with the selected extension',
];

View File

@@ -90,6 +90,8 @@ return [
'URL' => 'Link',
'REASON' => 'Reason',
'NO_ID' => 'No file selected ..!!',
'TOTAL_SIZE_EXCEEDED' => 'The total size has been exceeded',
'STORAGE_USAGE' => '<b>%s</b> of <b>%s</b>',
'NO_ME300RES' => 'The Reason field cannot be more than 300 characters!!',
'THNX_REPORTED' => 'We have received your report, Thank you.',
'RULES' => 'Terms',
@@ -111,6 +113,7 @@ return [
'IMAGE' => 'Image',
'USERS_ST' => 'Total Users',
'USER' => 'user',
'USED_SPACE' => 'Used Space',
'SIZES_ST' => 'Total size of uploaded files',
'LSTDELST' => 'Last check for un-downloaded (inactive) files',
@@ -220,6 +223,7 @@ return [
'NO_FILE_USER' => 'No files were found in the account!',
'SHOWFILESBYIP' => 'Show files by IP',
'WAIT_LOADING' => 'Please wait, the files are being uploaded to the server...',
'LOADING' => 'Loading',
'NOTICECLOSED' => 'Note: website is in maintenance mode!',
'UNKNOWN' => 'Unknown',
'WE_UPDATING_KLEEJA_NOW' => 'Closed for maintenance, Check back soon...',
@@ -282,4 +286,7 @@ return [
'EMAIL_CHANGE_REQ_PASS' => 'In order to change your email address, It\'s required to type your current password.',
'DRAG_AND_DROP' => 'Drop a file inside&hellip;',
'OR_MANUAL_SELECT' => 'Or click here to <em>Select</em> a file manually..',
'ABOUT_FILE' => 'File Information',
'FILE_NO_INFO' => 'No Information found about this file',
'SAVE' => 'Save',
];

View File

@@ -58,8 +58,8 @@ return [
'DB_INFO' => 'Enter the database information ..!',
'DB_SERVER' => 'Host',
'DB_TYPE' => 'Database type',
'DB_TYPE_MYSQL' => 'MySQL',
'DB_TYPE_SQLITE' => 'MySQL Improved',
'DB_TYPE_MYSQLI' => 'MySQL Improved',
'DB_TYPE_SQLITE' => 'SQLite',
'DB_USER' => 'Database Username',
'DB_PASSWORD' => 'Database Password',
'DB_NAME' => 'Database Name',

View File

@@ -5,279 +5,280 @@
//
return [
'U_NOT_ADMIN' => 'شما دسترسي مديريتي نداريد.',
'UPDATE_CONFIG' => 'بروزرساني تنظيمات',
'NO_CHANGE' => 'بدون تغيير',
'CHANGE_MD5' => 'تغيير بوسيله MD5',
'CHANGE_TIME' => 'تغيير بوسيله زمان',
'SITENAME' => 'نام سایت',
'SITEMAIL' => 'ادرس پست الکترونيکي',
'SITEMAIL2' => 'ادرس پست الکترونيکي گزارشات',
'SITEURL' => 'ادرس اينترنتي سايت به همراه / در پايان',
'FOLDERNAME' => 'نام پوشه , فايل هاي اپلودي',
'PREFIXNAME' => 'پيشوند فايل ها <small>( همچنين ميتوانيد از {rand:4} , {date:d_Y} هم استفاده کنيد.)</small>',
'FILESNUM' => 'تعداد فيلد هاي اپلود ',
'FILESNUM_SHOW' => 'نمايش همه فيلد هاي اپلود',
'SITECLOSE' => 'بستن سايت',
'CLOSEMSG' => 'پیامی که هنگام بستن سایت نمایش داده میشود',
'DECODE' => 'تغيير نام فايل',
'SEC_DOWN' => 'زمان (ثانيه) قبل از دانلود',
'STATFOOTER' => 'نمايش امار صفحه در فوتر',
'GZIP' => 'استفاده از gzip',
'GOOGLEANALYTICS' => '<a href="http://www.google.com/analytics" target="_kleeja"><span style="color:orange">Google</span> Analytics</a>',
'WELCOME_MSG' => 'پيام خوش امد گويي',
'USER_SYSTEM' => 'سيستم کاربران (سيستم متصل به اپلود سنتر)',
'TOTAL_SIZE' => 'بيشترين حجم اپلود (مگابایت)',
'THUMBS_IMGS' => 'فعال کردن پيشنمايش تصاوير (تصاوير بند انگشتي)',
'WRITE_IMGS' => 'فعال کردن نشانه گذاري تصاوير',
'ID_FORM' => 'نحوه ادرس دهي فايل',
'IDF' => 'شناسه فايل در ديتا بيس',
'IDFF' => 'نام فايل',
'IDFD' => 'مستقيم',
'ID_FORM_IMG' => 'قالب پیوندهای تصویری <small>(مستقیم ، مشمول حمایت یا آمار ما نیست ..)</small>',
'IDF_IMG' => 'مقدماتی (example.com/do.php?img=123)',
'IDFF_IMG' => 'نام فایل (example.com/do.php?imgf=filename.png)',
'IDFD_IMG' => 'لینک مستقیم (example.com/uploads/filename.png)',
'DEL_URL_FILE' => 'فعال کردن قابليت ارائه لينک حذف فايل',
'ALLOW_STAT_PG' => 'فعال کردن صفحه امار ها',
'ALLOW_ONLINE' => 'فعال کردن قابليت -چه کسي انلاين است؟ -',
'DEL_F_DAY' => 'حذف فايل هاي بلا استفاده پس از ',
'MOD_WRITER' => 'دستورات بازنويسي',
'MOD_WRITER_EX' => 'لينک هاي HTML..',
'NUMFIELD_S' => 'شما بايد براي برخي از فيلد ها فقط از اعداد استفاده نماييد.',
'CONFIGS_UPDATED' => 'تنظيمات با موفقيت بروز شدند',
'E_EXTS' => 'نکته : حجم ها بر اساس کيلو بايت ميباشند.</i>',
'UPDATED_EXTS' => 'پسوند ها با موفقيت بروز شدند.',
'EXT_DELETED' => 'پسوند با موفقيت حذف شد.',
'REPLY' => '[ پاسخ ]',
'REPLY_REPORT' => 'پاسخ در گزارش',
'U_REPORT_ON' => 'براي گزارش شما درمورد ',
'BY_EMAIL' => 'بوسيله ايميل ',
'ADMIN_REPLIED' => 'پاسخ مديريت',
'IS_SEND_MAIL' => 'پاسخ ارسال شد.',
'REPORTS_UPDATED' => 'گزارشات بروز شدند.',
'REPLY_CALL' => 'پاسخ به پيام',
'REPLIED_ON_CAL' => 'درباره پيام شما ',
'CALLS_UPDATED' => 'پيام ها با موفقيت بروز رساني شدند.',
'FOUNDER' => 'موسس',
'USER_UPDATED' => 'اطلاعات کاربران با موفقيت بروز شدند.',
'REPAIRE_TABLE' => '[جداول] تعمير شدند. ',
'REPAIRE_CACHE' => 'کش با موفقيت پاک شد / بروز رساني شد.',
'KLEEJA_CP' => '[ کليجا ] مديريت',
'GENERAL_STAT' => 'امار عمومي',
'SEARCH_STAT' => 'آمار موتورهای جستجو',
'OTHER_INFO' => 'ديگر اطلاعات',
'AFILES_NUM' => 'مجموع فايل ها',
'AFILES_SIZE_SPACE' => 'فضاي مصرف شده تا کنون',
'AUSERS_NUM' => 'مجموع کاربران',
'LAST_GOOGLE' => 'اخرين بازديد از گوگل',
'GOOGLE_NUM' => 'ورودي هاي گوگل',
'LAST_BING' => 'اخرين بازديد از بينگ',
'BING_NUM' => 'ورودي هاي بينگ',
'KLEEJA_CP_W' => 'سلام! به پنل مديريت خوش امديد!',
'PHP_VER' => 'ورژن PHP ',
'MYSQL_VER' => 'ورژن MYSQL',
'R_CONFIGS' => 'تنظيمات عمومي',
'R_CPINDEX' => 'صفحه اصلي مديريت',
'R_EXTS' => 'تنظيمات پسوند ها',
'R_FILES' => 'کنترل فايل ها',
'R_REPORTS' => 'گزارشات',
'R_CALLS' => 'پيام ها',
'R_USERS' => 'کاربران و گروه ها',
'R_REPAIR' => 'تعميرات',
'R_LGOUTCP' => 'پاک سازي دوره ها',
'R_BAN' => 'کنترل منع',
'BAN_EXP1' => 'ويرايش اي پي هاي منع شده و افزودن ...',
'BAN_EXP2' => 'براي بن کردن يک رنج اي پي از * استفاده نماييد و براي جداسازي اي پي ها از (|) استفاده نماييد.',
'UPDATE_BAN' => 'ذخيره تغييرات',
'BAN_UPDATED' => 'تغييرات با موفقيت ذخيره شدند',
'R_RULES' => 'قوانين',
'RULES_EXP' => 'شما ميتوانيد توسط اين قسمت قوانين سيستم خود را بروز رساني و يا اضافه نماييد.',
'UPDATE_RULES' => 'بروز رساني',
'RULES_UPDATED' => 'قوانين با موفقيت بروز شدند.',
'R_SEARCH' => 'جست و جوي پيشرفته',
'SEARCH_FILES' => 'جست وجو براي فايل هاي',
'SEARCH_SUBMIT' => 'جست وجو',
'LAST_DOWN' => 'اخرين دانلود ',
'WAS_B4' => 'قبل از ',
'SEARCH_USERS' => 'جست وجو براي کاربر',
'R_IMG_CTRL' => 'کنترل تصاوير',
'ENABLE_USERFILE' => 'فعال سازي فايل هاي کاربران',
'R_EXTRA' => 'قالب هاي اضافي',
'EX_HEADER_N' => 'هدر اضافي... هدري که در زير هدر اصلي نمايش داده خواهد شد.',
'EX_FOOTER_N' => 'فوتر اضافي...فوتري که در بالاي فوتر اصلي نمايش داده خواهد شد.',
'UPDATE_EXTRA' => 'بروز رساني افزوده هاي قالب',
'EXTRA_UPDATED' => 'افزوده هاي قالب با موفقيت بروز شدند.',
'R_STYLES' => 'استايل ها',
'NO_TPL_SHOOSED' => 'شما هيچ قالبي انتخاب نکرديد...',
'R_PLUGINS' => 'افزونه ها',
'ADD_NEW_PLUGIN' => 'افزودن افزونه',
'ITEM_DELETED' => '"%s" با موفقیت حذف شد ...',
'PLGUIN_DISABLED_ENABLED' => 'افزونه فعال / غير فعال شد.',
'NO_PLUGINS' => 'در حال حاضر افزونه اي نصب نيست.',
'NO_STYLES' => 'هیچ سبکی در دسترس نیست ..',
'NEW_PLUGIN_ADDED' => 'افزونه اضافه شد... <br /> توجه : برخي از افزونه هاي به همراه فايل هاي اضافي ارائه ميشوند که اين فايل ها نياز دارند به روت اصلي کليجا انتقال داده شوند.',
'PLUGIN_EXISTS_BEFORE' => 'اين افزونه با ورژن بالاتر از قبل موجود ميباشد.!',
'R_CHECK_UPDATE' => 'چک کردن براي بروز رساني',
'ERROR_CHECK_VER' => 'خطا ! مشل در بروز رساني , لطفا بعدا تلاش نماييد.',
'UPDATE_KLJ_NOW' => 'شما بايد ورژن خود را بروز رساني کنيد. براي اطلاعات بيشتر به سايت مرجع مراجعه نماييد.',
'U_LAST_VER_KLJ' => 'شما از اخرين نسخه کليجا استفاده ميکنيد.',
'U_USE_PRE_RE' => 'شما از نسخه بتا استفاده ميکنيد ,براي گزارش هر گونه خطا يا باگ <a href="http://www.kleeja.com/bugs/">اينجا را</a> کليک نماييد.',
'STYLE_IS_DEFAULT' => 'استايل پيش فرض',
'MAKE_AS_DEFAULT' => 'انتخاب به عنوان پيش فرض',
'STYLE_NOW_IS_DEFAULT' => 'قالب "%s" به عنوان , قالب پيش فرض انتخاب شد.',
'UPDATE_NOW_S' => 'نسخه کليجا شما قديمي ميباشد.لطفا ان را بروز رساني کنيد. ورژن فعلي شما %1$s ميباشد و جديدترين نسخه حاضر %2$s است',
'ADD_NEW_EXT' => 'افزودن پسوند جديد',
'ADD_NEW_EXT_EXP' => 'پسوند مورد نظر را وارد کنيد تا به اين گروه افزوده شود.',
'EMPTY_EXT_FIELD' => 'فيلد پسوند خالي ميباشد.',
'NEW_EXT_ADD' => 'پسوند جديد افزوده شد. ',
'NEW_EXT_EXISTS_B4' => 'پسوند %s از قبل موجود ميباشد.',
'CONFIG_WRITEABLE' => 'فايل config.php در حال حاضر پرميشن کامل براي دسترسي دارد. به شدت توصيه ميکنيم سطح دسترسي را به 640 و يا حداقل 644 تغيير دهيد.',
'USERS_NOT_NORMAL_SYS' => 'سيستم فعلي شما , يک سيستم معمولي نميباشد.',
'DIMENSIONS_THMB' => 'ابعاد تصاوير بند انگشتي',
'ADMIN_DELETE_FILE_OK' => 'انجام شد! ',
'ADMIN_DELETE_FILES' => 'حذف کليه ي فايل هاي کاربر!',
'U_NOT_ADMIN' => 'شما دسترسي مديريتي نداريد.',
'UPDATE_CONFIG' => 'بروزرساني تنظيمات',
'NO_CHANGE' => 'بدون تغيير',
'CHANGE_MD5' => 'تغيير بوسيله MD5',
'CHANGE_TIME' => 'تغيير بوسيله زمان',
'SITENAME' => 'نام سایت',
'SITEMAIL' => 'ادرس پست الکترونيکي',
'SITEMAIL2' => 'ادرس پست الکترونيکي گزارشات',
'SITEURL' => 'ادرس اينترنتي سايت به همراه / در پايان',
'FOLDERNAME' => 'نام پوشه , فايل هاي اپلودي',
'PREFIXNAME' => 'پيشوند فايل ها <small>( همچنين ميتوانيد از {rand:4} , {date:d_Y} هم استفاده کنيد.)</small>',
'FILESNUM' => 'تعداد فيلد هاي اپلود ',
'FILESNUM_SHOW' => 'نمايش همه فيلد هاي اپلود',
'SITECLOSE' => 'بستن سايت',
'CLOSEMSG' => 'پیامی که هنگام بستن سایت نمایش داده میشود',
'DECODE' => 'تغيير نام فايل',
'SEC_DOWN' => 'زمان (ثانيه) قبل از دانلود',
'STATFOOTER' => 'نمايش امار صفحه در فوتر',
'GZIP' => 'استفاده از gzip',
'GOOGLEANALYTICS' => '<a href="http://www.google.com/analytics" target="_kleeja"><span style="color:orange">Google</span> Analytics</a>',
'WELCOME_MSG' => 'پيام خوش امد گويي',
'USER_SYSTEM' => 'سيستم کاربران (سيستم متصل به اپلود سنتر)',
'TOTAL_SIZE' => 'بيشترين حجم اپلود (مگابایت)',
'THUMBS_IMGS' => 'فعال کردن پيشنمايش تصاوير (تصاوير بند انگشتي)',
'WRITE_IMGS' => 'فعال کردن نشانه گذاري تصاوير',
'ID_FORM' => 'نحوه ادرس دهي فايل',
'IDF' => 'شناسه فايل در ديتا بيس',
'IDFF' => 'نام فايل',
'IDFD' => 'مستقيم',
'ID_FORM_IMG' => 'قالب پیوندهای تصویری <small>(مستقیم ، مشمول حمایت یا آمار ما نیست ..)</small>',
'IDF_IMG' => 'مقدماتی (example.com/do.php?img=123)',
'IDFF_IMG' => 'نام فایل (example.com/do.php?imgf=filename.png)',
'IDFD_IMG' => 'لینک مستقیم (example.com/uploads/filename.png)',
'DEL_URL_FILE' => 'فعال کردن قابليت ارائه لينک حذف فايل',
'ALLOW_STAT_PG' => 'فعال کردن صفحه امار ها',
'ALLOW_ONLINE' => 'فعال کردن قابليت -چه کسي انلاين است؟ -',
'DEL_F_DAY' => 'حذف فايل هاي بلا استفاده پس از ',
'MOD_WRITER' => 'دستورات بازنويسي',
'MOD_WRITER_EX' => 'لينک هاي HTML..',
'NUMFIELD_S' => 'شما بايد براي برخي از فيلد ها فقط از اعداد استفاده نماييد.',
'CONFIGS_UPDATED' => 'تنظيمات با موفقيت بروز شدند',
'E_EXTS' => 'نکته : حجم ها بر اساس کيلو بايت ميباشند.</i>',
'UPDATED_EXTS' => 'پسوند ها با موفقيت بروز شدند.',
'EXT_DELETED' => 'پسوند با موفقيت حذف شد.',
'REPLY' => '[ پاسخ ]',
'REPLY_REPORT' => 'پاسخ در گزارش',
'U_REPORT_ON' => 'براي گزارش شما درمورد ',
'BY_EMAIL' => 'بوسيله ايميل ',
'ADMIN_REPLIED' => 'پاسخ مديريت',
'IS_SEND_MAIL' => 'پاسخ ارسال شد.',
'REPORTS_UPDATED' => 'گزارشات بروز شدند.',
'REPLY_CALL' => 'پاسخ به پيام',
'REPLIED_ON_CAL' => 'درباره پيام شما ',
'CALLS_UPDATED' => 'پيام ها با موفقيت بروز رساني شدند.',
'FOUNDER' => 'موسس',
'USER_UPDATED' => 'اطلاعات کاربران با موفقيت بروز شدند.',
'REPAIRE_TABLE' => '[جداول] تعمير شدند. ',
'REPAIRE_CACHE' => 'کش با موفقيت پاک شد / بروز رساني شد.',
'KLEEJA_CP' => '[ کليجا ] مديريت',
'GENERAL_STAT' => 'امار عمومي',
'SEARCH_STAT' => 'آمار موتورهای جستجو',
'OTHER_INFO' => 'ديگر اطلاعات',
'AFILES_NUM' => 'مجموع فايل ها',
'AFILES_SIZE_SPACE' => 'فضاي مصرف شده تا کنون',
'AUSERS_NUM' => 'مجموع کاربران',
'LAST_GOOGLE' => 'اخرين بازديد از گوگل',
'GOOGLE_NUM' => 'ورودي هاي گوگل',
'LAST_BING' => 'اخرين بازديد از بينگ',
'BING_NUM' => 'ورودي هاي بينگ',
'KLEEJA_CP_W' => 'سلام! به پنل مديريت خوش امديد!',
'PHP_VER' => 'ورژن PHP ',
'MYSQL_VER' => 'ورژن MYSQL',
'R_CONFIGS' => 'تنظيمات عمومي',
'R_CPINDEX' => 'صفحه اصلي مديريت',
'R_EXTS' => 'تنظيمات پسوند ها',
'R_FILES' => 'کنترل فايل ها',
'R_REPORTS' => 'گزارشات',
'R_CALLS' => 'پيام ها',
'R_USERS' => 'کاربران و گروه ها',
'R_REPAIR' => 'تعميرات',
'R_LGOUTCP' => 'پاک سازي دوره ها',
'R_BAN' => 'کنترل منع',
'BAN_EXP1' => 'ويرايش اي پي هاي منع شده و افزودن ...',
'BAN_EXP2' => 'براي بن کردن يک رنج اي پي از * استفاده نماييد و براي جداسازي اي پي ها از (|) استفاده نماييد.',
'UPDATE_BAN' => 'ذخيره تغييرات',
'BAN_UPDATED' => 'تغييرات با موفقيت ذخيره شدند',
'R_RULES' => 'قوانين',
'RULES_EXP' => 'شما ميتوانيد توسط اين قسمت قوانين سيستم خود را بروز رساني و يا اضافه نماييد.',
'UPDATE_RULES' => 'بروز رساني',
'RULES_UPDATED' => 'قوانين با موفقيت بروز شدند.',
'R_SEARCH' => 'جست و جوي پيشرفته',
'SEARCH_FILES' => 'جست وجو براي فايل هاي',
'SEARCH_SUBMIT' => 'جست وجو',
'LAST_DOWN' => 'اخرين دانلود ',
'WAS_B4' => 'قبل از ',
'SEARCH_USERS' => 'جست وجو براي کاربر',
'R_IMG_CTRL' => 'کنترل تصاوير',
'ENABLE_USERFILE' => 'فعال سازي فايل هاي کاربران',
'MAX_STORAGE' => 'حداکثر ذخیره سازی (بایت)',
'R_EXTRA' => 'قالب هاي اضافي',
'EX_HEADER_N' => 'هدر اضافي... هدري که در زير هدر اصلي نمايش داده خواهد شد.',
'EX_FOOTER_N' => 'فوتر اضافي...فوتري که در بالاي فوتر اصلي نمايش داده خواهد شد.',
'UPDATE_EXTRA' => 'بروز رساني افزوده هاي قالب',
'EXTRA_UPDATED' => 'افزوده هاي قالب با موفقيت بروز شدند.',
'R_STYLES' => 'استايل ها',
'NO_TPL_SHOOSED' => 'شما هيچ قالبي انتخاب نکرديد...',
'R_PLUGINS' => 'افزونه ها',
'ADD_NEW_PLUGIN' => 'افزودن افزونه',
'ITEM_DELETED' => '"%s" با موفقیت حذف شد ...',
'PLGUIN_DISABLED_ENABLED' => 'افزونه فعال / غير فعال شد.',
'NO_PLUGINS' => 'در حال حاضر افزونه اي نصب نيست.',
'NO_STYLES' => 'هیچ سبکی در دسترس نیست ..',
'NEW_PLUGIN_ADDED' => 'افزونه اضافه شد... <br /> توجه : برخي از افزونه هاي به همراه فايل هاي اضافي ارائه ميشوند که اين فايل ها نياز دارند به روت اصلي کليجا انتقال داده شوند.',
'PLUGIN_EXISTS_BEFORE' => 'اين افزونه با ورژن بالاتر از قبل موجود ميباشد.!',
'R_CHECK_UPDATE' => 'چک کردن براي بروز رساني',
'ERROR_CHECK_VER' => 'خطا ! مشل در بروز رساني , لطفا بعدا تلاش نماييد.',
'UPDATE_KLJ_NOW' => 'شما بايد ورژن خود را بروز رساني کنيد. براي اطلاعات بيشتر به سايت مرجع مراجعه نماييد.',
'U_LAST_VER_KLJ' => 'شما از اخرين نسخه کليجا استفاده ميکنيد.',
'U_USE_PRE_RE' => 'شما از نسخه بتا استفاده ميکنيد ,براي گزارش هر گونه خطا يا باگ <a href="http://www.kleeja.com/bugs/">اينجا را</a> کليک نماييد.',
'STYLE_IS_DEFAULT' => 'استايل پيش فرض',
'MAKE_AS_DEFAULT' => 'انتخاب به عنوان پيش فرض',
'STYLE_NOW_IS_DEFAULT' => 'قالب "%s" به عنوان , قالب پيش فرض انتخاب شد.',
'UPDATE_NOW_S' => 'نسخه کليجا شما قديمي ميباشد.لطفا ان را بروز رساني کنيد. ورژن فعلي شما %1$s ميباشد و جديدترين نسخه حاضر %2$s است',
'ADD_NEW_EXT' => 'افزودن پسوند جديد',
'ADD_NEW_EXT_EXP' => 'پسوند مورد نظر را وارد کنيد تا به اين گروه افزوده شود.',
'EMPTY_EXT_FIELD' => 'فيلد پسوند خالي ميباشد.',
'NEW_EXT_ADD' => 'پسوند جديد افزوده شد. ',
'NEW_EXT_EXISTS_B4' => 'پسوند %s از قبل موجود ميباشد.',
'CONFIG_WRITEABLE' => 'فايل config.php در حال حاضر پرميشن کامل براي دسترسي دارد. به شدت توصيه ميکنيم سطح دسترسي را به 640 و يا حداقل 644 تغيير دهيد.',
'USERS_NOT_NORMAL_SYS' => 'سيستم فعلي شما , يک سيستم معمولي نميباشد.',
'DIMENSIONS_THMB' => 'ابعاد تصاوير بند انگشتي',
'ADMIN_DELETE_FILE_OK' => 'انجام شد! ',
'ADMIN_DELETE_FILES' => 'حذف کليه ي فايل هاي کاربر!',
'BCONVERTER' => 'مبدل بايت',
'NO_HTACCESS_DIR_UP' => 'فايل .htaccess در پوشه "%s" موجود نميباشد! و اين براي امنيت سايت شما بسيار خطر ساز است.',
'NO_HTACCESS_DIR_UP_THUMB' => 'فايل .htaccess در پوشه تصاوير بند انگشتي موجود نميباشد! اين براي امنيت سايت شما بسيار خطر ساز است.',
'COOKIE_DOMAIN' => 'کوکي دامنه',
'COOKIE_NAME' => 'پيشوند کوکي',
'COOKIE_PATH' => 'مسير کوکي',
'COOKIE_SECURE' => 'کوکي محافظت شده',
'SHOWFILESBYIP' => 'نمایش فایل های IP',
'DELETEALLRES' => 'حذف همه نتايج',
'ADMIN_DELETE_FILES_OK' => 'فايل %s با موفقيت حذف شد.',
'ADMIN_DELETE_FILES_NOF' => 'فايلي براي حذف موجود نميباشد.',
'NOT_EXSIT_USER' => 'متاسفانه ...کاربري که شما به دنبال ان هستيد در ديتا بيس ما وجود ندارد!!!',
'ADMIN_DELETE_NO_FILE' => 'اين کاربر , فايلي براي حذف ندارد!!!',
'CONFIG_KLJ_MENUS_OTHER' => 'ديگر تنظيمات',
'CONFIG_KLJ_MENUS_GENERAL' => 'تنظيمات عمومي',
'CONFIG_KLJ_MENUS_ALL' => 'نمايش همه تنظيمات',
'CONFIG_KLJ_MENUS_UPLOAD' => 'تنظيمات اپلود',
'CONFIG_KLJ_MENUS_INTERFACE'=> 'تنظيمات ظاهري و طراحي',
'CONFIG_KLJ_MENUS_ADVANCED' => 'تنظيمات پيشرفته',
'DELF_CAUTION' => '<span class="delf_caution">اخطار : ممکن است در هنگام استفاده از اعداد کوچک , خطر ساز باشد.</span>',
'PACKAGE_N_CMPT_KLJ' => 'این افزونه / سبک با نسخه kleja که استفاده می کنید سازگار نیست! .',
'PHPINI_FILESIZE_SMALL' => 'بيشترين حجم اجازه داده شده براي اپلود به سرويس شما "%1$s" انتخاب شده است در حالي که بيشترين حجم قالب اپلود براي پي اچ پي در سرور شما "%2$s" ميباشد.',
'PHPINI_MPOSTSIZE_SMALL' => 'شما اپلود فايل هاي "%1$s" را مجاز کرديد, اکنون بايد مقدار بيشتري براي post_max_size انتخاب کنيد ',
'NUMPER_REPORT' => 'تعداد گزارشات',
'NO_UP_CHANGE_S' => 'تغييري رخ نداده است...',
'ADD_HEADER_EXTRA' => 'هدر اضافي',
'ADD_FOOTER_EXTRA' => 'فوتر اضافي',
'ADMIN_USING_IE6' => 'شما از مرورگر اينترنت اکسپلورر 6 استفاده ميکنيد, لطفا از مرورگر ديگري استفاده کنيد.',
'T_CLEANING_FILES_NOW' => 'حذف فايل هاي بلا استفاده, اين فرايند ممکن است مدتي به طول بي انجامد.',
'DEPEND_ON_NO_STYLE_ERR' => 'اين استايل بر پايه استايل "%s" ميباشد, که ظاهرا شما ان را نداريد.',
'PLUGINS_REQ_NO_STYLE_ERR' => 'اين استايل نياز به افزونه [ s% ] دارد, ان را نصب نماييد.',
'KLJ_VER_NO_STYLE_ERR' => 'اين استايل نياز به نسخه %s کليجا يا بالاتر را دارد.',
'STYLE_DEPEND_ON' => 'پايه ',
'MESSAGE_NONE' => 'پيامي وجود ندارد...',
'KLEEJA_TEAM' => 'تيم توسعه کليجا',
'ERR_SEND_MAIL' => 'خطا در ارسال ميل, لطفا بعدا تلاش کنيد...!',
'FIND_IP_FILES' => 'يافت شد',
'ALPHABETICAL_ORDER_FILES' => 'مرتب سازي فايل ها بر اساس الفبا',
'ORDER_SIZE' => 'مرتب سازي فايل ها بر اساس حجم از بزرگ به کوچک',
'ORDER_TOTAL_DOWNLOADS' => 'مرتب سازي فايل ها بر اساس تعداد دانلود ها',
'LIVEXTS' => 'پسوند هاي زنده',
'COMMA_X' => '<p class="live_xts">جدا شده توسط کاما (<font style="font-size:large"> , </font>)</p>',
'NO_SEARCH_WORD' => 'شما چيزي در فرم جست و جو تايپ نکرديد!',
'USERSECTOUPLOAD' => 'زمان (ثانيه) بين هر اپلود با اپلود بعدي.',
'ADM_UNWANTED_FILES' => 'ظاهرا شما از نسخه قديمي بروز رساني کرده ايد و به دليل تفاوت نوع فايل ها شما با مشکل دوگانگي فايل مواجه ميشويد. </ br> براي رفع اين مشکل , کليه ي فايل هاي پوشه "includes/adm" را پاک کرده و مجددا اپلود نماييد.',
'HTML_URLS_ENABLED_NO_HTCC' => 'شما ادرس دهي بر اساس قوانين htaccess را انتخا کرده ايد. اما ظاهرا وارد کردن قوانين را فراموش کرده ايد. براي اطلاعات بيشتر به سايت پشتيبان مراجعه نماييد.',
'PLUGIN_CONFIRM_ADD' => 'اخطار!!! اين افزونه تغييراتي در اسکريپت اصلي خواهد داد و اين ممکن است براي امنيت در اينده خطر ساز باشد, لذا از صحت افزونه اطمينان حاصل کنيد.',
'LOADING' => 'در حال بارگذاري',
'WELCOME' => 'خوش امديد',
'ENABLE_CAPTCHA' => 'فعال کردن کپچا در کليجا!',
'NO_THUMB_FOLDER' => 'ظاهرا شما قابليت تصاوير بند انگشتي را فعال کرديد, اما پوشه %s موجو نميباشد.ان را به صورت دستي ايجاد کنيد.',
'DELETE_EARLIER_30DAYS' => 'حذف فايل هاي قديمي تر از 30 روز',
'DELETE_ALL' => 'حذف همه',
'DELETE_PROCESS_QUEUED' => 'فعاليت حذف به ليست انتظار افزوده شد تا از لود سرور جلوگيري شود.',
'DELETE_PROCESS_IN_WORK' => 'فرايند حذف در حال انجام ميباشد.',
'SHOW_FROM_24H' => 'نمايش 24 ساعت گذشته',
'THUMB_DIS_LONGTIME' => 'قابليت تصاوير بند انگشتي غير فعال شده است.اين باعث ميشه که کليجا همه عکس هاي شما را کم حجم کند تا در اينجا قابل نمايش باشد.',
'R_GROUPS' => 'مديريت گروه ها',
'ESSENTIAL_GROUPS' => 'گروه هاي اصلي',
'CUSTOM_GROUPS' => 'گروه هاي شخصي سازي شده',
'EDIT_DATA' => 'ويرايش اطلاعات',
'EDIT_ACL' => 'مجوزها را ویرایش کنید',
'HE_CAN' => 'توانا',
'HE_CAN_NOT' => 'ناتوان',
//ACLS roles
'ACLS_ENTER_ACP' => 'دسترسي به ACP',
'ACLS_ACCESS_FILEUSER' => 'دسترسي به فايل هاي خودش.',
'ACLS_ACCESS_FILEUSERS' => 'جست وجوي هرگونه فايل / پوشه کاربر',
'ACLS_ACCESS_CALL' => 'دسترسي به پوشه "تماس با ما "',
'ACLS_ACCESS_REPORT' => 'نمايش صفحه "گزارشات"',
'ACLS_ACCESS_STATS' => 'دسترسي به صفحه امار ها',
'BCONVERTER' => 'مبدل بايت',
'NO_HTACCESS_DIR_UP' => 'فايل .htaccess در پوشه "%s" موجود نميباشد! و اين براي امنيت سايت شما بسيار خطر ساز است.',
'NO_HTACCESS_DIR_UP_THUMB' => 'فايل .htaccess در پوشه تصاوير بند انگشتي موجود نميباشد! اين براي امنيت سايت شما بسيار خطر ساز است.',
'COOKIE_DOMAIN' => 'کوکي دامنه',
'COOKIE_NAME' => 'پيشوند کوکي',
'COOKIE_PATH' => 'مسير کوکي',
'COOKIE_SECURE' => 'کوکي محافظت شده',
'SHOWFILESBYIP' => 'نمایش فایل های IP',
'DELETEALLRES' => 'حذف همه نتايج',
'ADMIN_DELETE_FILES_OK' => 'فايل %s با موفقيت حذف شد.',
'ADMIN_DELETE_FILES_NOF' => 'فايلي براي حذف موجود نميباشد.',
'NOT_EXSIT_USER' => 'متاسفانه ...کاربري که شما به دنبال ان هستيد در ديتا بيس ما وجود ندارد!!!',
'ADMIN_DELETE_NO_FILE' => 'اين کاربر , فايلي براي حذف ندارد!!!',
'CONFIG_KLJ_MENUS_OTHER' => 'ديگر تنظيمات',
'CONFIG_KLJ_MENUS_GENERAL' => 'تنظيمات عمومي',
'CONFIG_KLJ_MENUS_ALL' => 'نمايش همه تنظيمات',
'CONFIG_KLJ_MENUS_UPLOAD' => 'تنظيمات اپلود',
'CONFIG_KLJ_MENUS_INTERFACE' => 'تنظيمات ظاهري و طراحي',
'CONFIG_KLJ_MENUS_ADVANCED' => 'تنظيمات پيشرفته',
'DELF_CAUTION' => '<span class="delf_caution">اخطار : ممکن است در هنگام استفاده از اعداد کوچک , خطر ساز باشد.</span>',
'PACKAGE_N_CMPT_KLJ' => 'این افزونه / سبک با نسخه kleja که استفاده می کنید سازگار نیست! .',
'PHPINI_FILESIZE_SMALL' => 'بيشترين حجم اجازه داده شده براي اپلود به سرويس شما "%1$s" انتخاب شده است در حالي که بيشترين حجم قالب اپلود براي پي اچ پي در سرور شما "%2$s" ميباشد.',
'PHPINI_MPOSTSIZE_SMALL' => 'شما اپلود فايل هاي "%1$s" را مجاز کرديد, اکنون بايد مقدار بيشتري براي post_max_size انتخاب کنيد ',
'NUMPER_REPORT' => 'تعداد گزارشات',
'NO_UP_CHANGE_S' => 'تغييري رخ نداده است...',
'ADD_HEADER_EXTRA' => 'هدر اضافي',
'ADD_FOOTER_EXTRA' => 'فوتر اضافي',
'ADMIN_USING_IE6' => 'شما از مرورگر اينترنت اکسپلورر 6 استفاده ميکنيد, لطفا از مرورگر ديگري استفاده کنيد.',
'T_CLEANING_FILES_NOW' => 'حذف فايل هاي بلا استفاده, اين فرايند ممکن است مدتي به طول بي انجامد.',
'DEPEND_ON_NO_STYLE_ERR' => 'اين استايل بر پايه استايل "%s" ميباشد, که ظاهرا شما ان را نداريد.',
'PLUGINS_REQ_NO_STYLE_ERR' => 'اين استايل نياز به افزونه [ s% ] دارد, ان را نصب نماييد.',
'KLJ_VER_NO_STYLE_ERR' => 'اين استايل نياز به نسخه %s کليجا يا بالاتر را دارد.',
'STYLE_DEPEND_ON' => 'پايه ',
'MESSAGE_NONE' => 'پيامي وجود ندارد...',
'KLEEJA_TEAM' => 'تيم توسعه کليجا',
'ERR_SEND_MAIL' => 'خطا در ارسال ميل, لطفا بعدا تلاش کنيد...!',
'FIND_IP_FILES' => 'يافت شد',
'ALPHABETICAL_ORDER_FILES' => 'مرتب سازي فايل ها بر اساس الفبا',
'ORDER_SIZE' => 'مرتب سازي فايل ها بر اساس حجم از بزرگ به کوچک',
'ORDER_TOTAL_DOWNLOADS' => 'مرتب سازي فايل ها بر اساس تعداد دانلود ها',
'LIVEXTS' => 'پسوند هاي زنده',
'COMMA_X' => '<p class="live_xts">جدا شده توسط کاما (<font style="font-size:large"> , </font>)</p>',
'NO_SEARCH_WORD' => 'شما چيزي در فرم جست و جو تايپ نکرديد!',
'USERSECTOUPLOAD' => 'زمان (ثانيه) بين هر اپلود با اپلود بعدي.',
'ENABLE_MULTIPART' => 'دانلود چند قسمتی را فعال کنید',
'ADM_UNWANTED_FILES' => 'ظاهرا شما از نسخه قديمي بروز رساني کرده ايد و به دليل تفاوت نوع فايل ها شما با مشکل دوگانگي فايل مواجه ميشويد. </ br> براي رفع اين مشکل , کليه ي فايل هاي پوشه "includes/adm" را پاک کرده و مجددا اپلود نماييد.',
'HTML_URLS_ENABLED_NO_HTCC' => 'شما ادرس دهي بر اساس قوانين htaccess را انتخا کرده ايد. اما ظاهرا وارد کردن قوانين را فراموش کرده ايد. براي اطلاعات بيشتر به سايت پشتيبان مراجعه نماييد.',
'PLUGIN_CONFIRM_ADD' => 'اخطار!!! اين افزونه تغييراتي در اسکريپت اصلي خواهد داد و اين ممکن است براي امنيت در اينده خطر ساز باشد, لذا از صحت افزونه اطمينان حاصل کنيد.',
'WELCOME' => 'خوش امديد',
'ENABLE_CAPTCHA' => 'فعال کردن کپچا در کليجا!',
'NO_THUMB_FOLDER' => 'ظاهرا شما قابليت تصاوير بند انگشتي را فعال کرديد, اما پوشه %s موجو نميباشد.ان را به صورت دستي ايجاد کنيد.',
'DELETE_EARLIER_30DAYS' => 'حذف فايل هاي قديمي تر از 30 روز',
'DELETE_ALL' => 'حذف همه',
'DELETE_PROCESS_QUEUED' => 'فعاليت حذف به ليست انتظار افزوده شد تا از لود سرور جلوگيري شود.',
'DELETE_PROCESS_IN_WORK' => 'فرايند حذف در حال انجام ميباشد.',
'SHOW_FROM_24H' => 'نمايش 24 ساعت گذشته',
'THUMB_DIS_LONGTIME' => 'قابليت تصاوير بند انگشتي غير فعال شده است.اين باعث ميشه که کليجا همه عکس هاي شما را کم حجم کند تا در اينجا قابل نمايش باشد.',
'GROUP_IS_DEFAULT' => 'اين گروه به صورت پيشفرض براي ثبت نام ها ميباشد.',
'ADD_NEW_GROUP' => 'افزودن گروه جديد',
'DELETE_GROUP' => 'حذف گروه',
'GROUP_NAME' => 'نام گروه',
'COPY_FROM' => 'کپي از',
'USERNAME_NOT_YOU' => 'تو نه ؟ %1$sخروج%2$s',
'DEFAULT_GROUP' => 'گروه پيش فرض',
'G_USERS_MOVE_TO' => 'انتقال کاربران گروه به',
'TAKEN_NAMES' => 'اين نام از قبل انتخاب شده است. نام ديگري انتخاب کنيد.',
'GROUP_DELETED' => 'گروه "%1$s" حذف شد و کاربران ان به گروه "%2$s" انتقال يافتند.',
'NO_MOVE_SAME_GRP' => 'شما نميتوانيد کاربران را به گروه مشابه انتقال دهيد.',
'DEFAULT_GRP_NO_DEL' => 'نميتوانيد اين گروه را حذف کنيد, زيرا اين گروه , گروه پيش فرض ميباشد.گروه را احالت پيشفرض خارج کنيد و مجددا تلاش نماييد.',
'GROUP_ADDED' => 'گروه "%s" با موفقيت افزوده شد...',
'SEARCH4FILES_BYIP' => 'جست و جو فايل براساس IP',
'SEARCH4FILES_BYUSER' => 'جست و جو فايل هاي اين کاربر',
'USER_DELETED' => 'کاربر با موفقيت حذف شد...',
'USER_ADDED' => 'کاربر با موفقيت افزوده شد...',
'DIRECT_FILE_NOTE' => 'اين فايل مستقيم ميباشد.فايل هاي مستقيم هيچ اماري ندارند...',
'IMAGEFOLDER' => 'پوشه زنده (live)',
'IMAGEFOLDEREXTS' => 'پسوند هاي پوشه Live',
'IMAGEFOLDERE' => 'تغيير نام فايل',
'LAST_VIEW' => 'اخرين نمايش',
'HURRY_HURRY' => 'دسترسی سریع',
'RESYNC' => 'هماهنگ سازي مجدد (sync)',
'DEL_CACHE' => 'تخليه ي کش [فايل هاي موقت]',
'SYNCING' => 'همگام سازي در حال انجام : (%s), لطفا صبر کنيد ',
'SYNCING_DONE' => 'همگام سازي براي (%s) انجام شد.',
'WHY_SYNCING' => 'کليجا از قابليت افزايش خودکار ( شمارشگر خودکار)استفاده ميکند. اين باعث بهبود نحوه عملکرد ميشود. پس از بروز رساني کليجا و يا هنگامي که اسکريپت از شما درخواست دارد از اين فعاليت استفاده کنيد.',
'REPAIR_DB_TABLES' => 'تعمير جداول ديتا بيس',
'NO_RESULT_USE_SYNC' => 'هيچ نتيجه اي حاصل نشد, اگر کليجا را تازه نصب کرده ايد مشکلي نيست. <br /> اگر شما تازه اسکريپت را اپگريد کرده ايد به صفحه "تعميرات " رفته و فايل ها و تصاوير را بروز رساني کنيد.',
'ADVICE_CRON_LINK' => 'ترجیح می دهید هر ساعت یا دو بار پیوند صف معین را به صورت Cron قرار دهید',
'UPLOAD_LOCAL_PC' => 'از دستگاه خود بارگیری کنید',
'NO_ZIP_ARCHIVE' => 'به نظر می رسد که ZipArchive در سرور شما موجود نیست ، آن را نصب کنید زیرا این یک الزام است.',
'EXTRACT_ZIP_FAILED' => 'هنگام باز کردن بایگانی مشکلی پیش آمد! اطمینان حاصل کنید که این یک فایل zip معتبر است و پوشه "%s" قابل نوشتن است.',
'NO_PROBLEM_AFTER_ZIP' => رونده با موفقیت از حالت فشرده خارج شد و آماده فعال سازی است.',
'SESSION_ENDED' => 'جلسه به پایان رسید. آیا می خواهید دوباره وارد شوید؟',
'CUSTOMIZATION' => 'شخصی سازی',
'SHOW' => 'نشان دادن',
'HIDE' => 'پنهان شدن',
'VIEW' => 'مرور',
'INSTALL' => 'نصب',
'CLOSE' => 'نزدیک',
'STATS_BOXES' => 'جعبه های آماری',
'ITEM_UPDATED' => '"%s" با موفقیت به روز شد ..',
'ITEM_DOWNLOADED' => '"%s" با موفقیت بارگذاری شد! بعدا می توانید آن را فعال کنید.',
'DOWNLOADED_FILE_NOT_FOUND' => 'پرونده ای که آپلود کردید وجود ندارد ، یافت نشد!',
'PACKAGE_REMOTE_FILE_MISSING' => 'بسته "٪ s" در فروشگاه خارجی كليجا در دسترس نیست!',
'STORE_SERVER_ERROR' => 'هنگام برقراری ارتباط با سرور فروشگاه خارجی كليجا با خطایی مواجه شدیم ...',
'INSTALLED_PLUGINS' => 'افزونه های نصب شده',
'LOCAL_PLUGINS' => 'برنامه های افزودنی محلی (نصب نشده است)',
'KLEEJA_STORE' => 'فروشگاه كليجا',
'KLJ_VER_NO_PLUGIN' => 'این افزونه / سبک می تواند بر روی نسخه كليجا%1$s تا%2$s کار کند.',
'VERSION' => 'رهایی',
'DEVELOPER' => 'توسعه دهنده',
'ALL_PLUGINS_UPDATED' => 'همه برنامه های افزودنی به روز هستند جذاب!',
'ALL_STYLES_UPDATED' => 'همه سبک ها به روز شده اند. جذاب!',
'UPDATE_ERR_FETCH_PACKAGE' => 'ما در بارگیری نسخه از سرور مشکل داشتیم!',
'UPDATE_BACKUP_CREATE_FAILED' => 'ما نتوانستیم فایل پشتیبان را در پوشه حافظه نهان ایجاد کنیم!',
'UPDATE_PROCESS_FAILED' => 'روند بروزرسانی انجام نشد!',
'UPDATE_PROCESS_DONE' => 'كليجا با موفقیت به نسخه `%s` به روز شد ...',
'UPDATE_PROCESS_STEP1' => 'بسته بندی آخرین نسخه كليجا را به ارمغان آورد ...',
'UPDATE_PROCESS_STEP2' => 'یک ظرف تهیه پشتیبان ایجاد کنید و آخرین بسته پشتیبان را از حالت فشرده خارج کنید ...',
'UPDATE_PROCESS_STEP3' => 'به نسخه جدید (فایلهای به روزرسانی و پایگاه داده) ارتقا دهید ...',
'RELEASE_NOTE' => 'اطلاعات نسخه',
'UPDATE_ALL' => 'همه رو آپدیت کن',
'CANT_DEL_DEFAULT_STYLE' => 'شما نمی توانید سبک پیش فرض را حذف کنید! سبک دیگری را تنظیم کنید که می توانید حذف کنید.',
'NOTIFICATIONS' => 'هشدارها',
'KJ_TWEETS' => 'توییتهای كليجا',
'R_GROUPS' => 'مديريت گروه ها',
'ESSENTIAL_GROUPS' => 'گروه هاي اصلي',
'CUSTOM_GROUPS' => 'گروه هاي شخصي سازي شده',
'EDIT_DATA' => 'ويرايش اطلاعات',
'EDIT_ACL' => 'مجوزها را ویرایش کنید',
'HE_CAN' => 'توانا',
'HE_CAN_NOT' => 'ناتوان',
//ACLS roles
'ACLS_ENTER_ACP' => 'دسترسي به ACP',
'ACLS_ACCESS_FILEUSER' => 'دسترسي به فايل هاي خودش.',
'ACLS_ACCESS_FILEUSERS' => 'جست وجوي هرگونه فايل / پوشه کاربر',
'ACLS_ACCESS_CALL' => 'دسترسي به پوشه "تماس با ما "',
'ACLS_ACCESS_REPORT' => 'نمايش صفحه "گزارشات"',
'ACLS_ACCESS_STATS' => 'دسترسي به صفحه امار ها',
'GROUP_IS_DEFAULT' => 'اين گروه به صورت پيشفرض براي ثبت نام ها ميباشد.',
'ADD_NEW_GROUP' => 'افزودن گروه جديد',
'DELETE_GROUP' => 'حذف گروه',
'GROUP_NAME' => 'نام گروه',
'COPY_FROM' => 'کپي از',
'USERNAME_NOT_YOU' => 'تو نه ؟ %1$sخروج%2$s',
'DEFAULT_GROUP' => 'گروه پيش فرض',
'G_USERS_MOVE_TO' => 'انتقال کاربران گروه به',
'TAKEN_NAMES' => 'اين نام از قبل انتخاب شده است. نام ديگري انتخاب کنيد.',
'GROUP_DELETED' => 'گروه "%1$s" حذف شد و کاربران ان به گروه "%2$s" انتقال يافتند.',
'NO_MOVE_SAME_GRP' => 'شما نميتوانيد کاربران را به گروه مشابه انتقال دهيد.',
'DEFAULT_GRP_NO_DEL' => 'نميتوانيد اين گروه را حذف کنيد, زيرا اين گروه , گروه پيش فرض ميباشد.گروه را احالت پيشفرض خارج کنيد و مجددا تلاش نماييد.',
'GROUP_ADDED' => 'گروه "%s" با موفقيت افزوده شد...',
'SEARCH4FILES_BYIP' => 'جست و جو فايل براساس IP',
'SEARCH4FILES_BYUSER' => 'جست و جو فايل هاي اين کاربر',
'USER_DELETED' => 'کاربر با موفقيت حذف شد...',
'USER_ADDED' => 'کاربر با موفقيت افزوده شد...',
'DIRECT_FILE_NOTE' => 'اين فايل مستقيم ميباشد.فايل هاي مستقيم هيچ اماري ندارند...',
'IMAGEFOLDER' => 'پوشه زنده (live)',
'IMAGEFOLDEREXTS' => سوند هاي پوشه Live',
'IMAGEFOLDERE' => 'تغيير نام فايل',
'LAST_VIEW' => 'اخرين نمايش',
'HURRY_HURRY' => 'دسترسی سریع',
'RESYNC' => 'هماهنگ سازي مجدد (sync)',
'DEL_CACHE' => 'تخليه ي کش [فايل هاي موقت]',
'SYNCING' => 'همگام سازي در حال انجام : (%s), لطفا صبر کنيد ',
'SYNCING_DONE' => 'همگام سازي براي (%s) انجام شد.',
'WHY_SYNCING' => 'کليجا از قابليت افزايش خودکار ( شمارشگر خودکار)استفاده ميکند. اين باعث بهبود نحوه عملکرد ميشود. پس از بروز رساني کليجا و يا هنگامي که اسکريپت از شما درخواست دارد از اين فعاليت استفاده کنيد.',
'REPAIR_DB_TABLES' => 'تعمير جداول ديتا بيس',
'NO_RESULT_USE_SYNC' => 'هيچ نتيجه اي حاصل نشد, اگر کليجا را تازه نصب کرده ايد مشکلي نيست. <br /> اگر شما تازه اسکريپت را اپگريد کرده ايد به صفحه "تعميرات " رفته و فايل ها و تصاوير را بروز رساني کنيد.',
'ADVICE_CRON_LINK' => 'ترجیح می دهید هر ساعت یا دو بار پیوند صف معین را به صورت Cron قرار دهید',
'UPLOAD_LOCAL_PC' => 'از دستگاه خود بارگیری کنید',
'NO_ZIP_ARCHIVE' => 'به نظر می رسد که ZipArchive در سرور شما موجود نیست ، آن را نصب کنید زیرا این یک الزام است.',
'EXTRACT_ZIP_FAILED' => 'هنگام باز کردن بایگانی مشکلی پیش آمد! اطمینان حاصل کنید که این یک فایل zip معتبر است و پوشه "%s" قابل نوشتن است.',
'NO_PROBLEM_AFTER_ZIP' => 'پرونده با موفقیت از حالت فشرده خارج شد و آماده فعال سازی است.',
'SESSION_ENDED' => 'جلسه به پایان رسید. آیا می خواهید دوباره وارد شوید؟',
'CUSTOMIZATION' => 'شخصی سازی',
'SHOW' => 'نشان دادن',
'HIDE' => 'پنهان شدن',
'VIEW' => 'مرور',
'INSTALL' => 'نصب',
'CLOSE' => 'نزدیک',
'STATS_BOXES' => 'جعبه های آماری',
'ITEM_UPDATED' => '"%s" با موفقیت به روز شد ..',
'ITEM_DOWNLOADED' => '"%s" با موفقیت بارگذاری شد! بعدا می توانید آن را فعال کنید.',
'DOWNLOADED_FILE_NOT_FOUND' => 'پرونده ای که آپلود کردید وجود ندارد ، یافت نشد!',
'PACKAGE_REMOTE_FILE_MISSING' => 'بسته "٪ s" در فروشگاه خارجی كليجا در دسترس نیست!',
'STORE_SERVER_ERROR' => 'هنگام برقراری ارتباط با سرور فروشگاه خارجی كليجا با خطایی مواجه شدیم ...',
'INSTALLED_PLUGINS' => 'افزونه های نصب شده',
'LOCAL_PLUGINS' => 'برنامه های افزودنی محلی (نصب نشده است)',
'KLEEJA_STORE' => 'فروشگاه كليجا',
'KLJ_VER_NO_PLUGIN' => 'این افزونه / سبک می تواند بر روی نسخه كليجا%1$s تا%2$s کار کند.',
'VERSION' => 'رهایی',
'DEVELOPER' => 'توسعه دهنده',
'ALL_PLUGINS_UPDATED' => 'همه برنامه های افزودنی به روز هستند جذاب!',
'ALL_STYLES_UPDATED' => 'همه سبک ها به روز شده اند. جذاب!',
'UPDATE_ERR_FETCH_PACKAGE' => 'ما در بارگیری نسخه از سرور مشکل داشتیم!',
'UPDATE_BACKUP_CREATE_FAILED' => 'ما نتوانستیم فایل پشتیبان را در پوشه حافظه نهان ایجاد کنیم!',
'UPDATE_PROCESS_FAILED' => 'روند بروزرسانی انجام نشد!',
'UPDATE_PROCESS_DONE' => 'كليجا با موفقیت به نسخه `%s` به روز شد ...',
'UPDATE_PROCESS_STEP1' => 'بسته بندی آخرین نسخه كليجا را به ارمغان آورد ...',
'UPDATE_PROCESS_STEP2' => 'یک ظرف تهیه پشتیبان ایجاد کنید و آخرین بسته پشتیبان را از حالت فشرده خارج کنید ...',
'UPDATE_PROCESS_STEP3' => 'به نسخه جدید (فایلهای به روزرسانی و پایگاه داده) ارتقا دهید ...',
'RELEASE_NOTE' => 'اطلاعات نسخه',
'UPDATE_ALL' => 'همه رو آپدیت کن',
'CANT_DEL_DEFAULT_STYLE' => 'شما نمی توانید سبک پیش فرض را حذف کنید! سبک دیگری را تنظیم کنید که می توانید حذف کنید.',
'NOTIFICATIONS' => 'هشدارها',
'KJ_TWEETS' => 'توییتهای كليجا',
];

View File

@@ -5,237 +5,241 @@
//
return [
//language information
'DIR' => 'rtl',
'LANG_SMALL_NAME' => 'fa-ir',
//language information
'DIR' => 'rtl',
'LANG_SMALL_NAME' => 'fa-ir',
'HOME' => 'خانه',
'INDEX' => 'صفحه اصلی',
'SITE_CLOSED' => 'سایت بسته است',
'STOP_FOR_SIZE' => 'سایت در دسترس نمی باشد',
'SIZES_EXCCEDED' => 'با عرض پوزش حجم سرور کنونی ما پر شده است ، لطفا بعدا مراجعه کنید',
'SAFE_CODE' => 'فعال کردن کد امنیتی برای دانلود',
'LAST_VISIT' => 'آخرین بازدید شما',
'FLS_LST_VST_SEARCH' => 'نمایش آخرین فایلها بعد از آخرین بازدید شما؟',
'IMG_LST_VST_SEARCH' => 'نمایش آخرین عکسها بعد از آخرین بازدید شما؟',
'NEXT' => 'بعدی &raquo;',
'PREV' => '&laquo; قبلی',
'INFORMATION' => 'توضیحات',
'WELCOME' => 'خوش آمدید',
'KLEEJA_VERSION' => 'ورژن کلیجا',
'NUMBER_ONLINE' => 'افراد آنلاین',
'USERS_SYSTEM' => 'سیستم کاربران',
'ERROR_NAVIGATATION' => 'خطا در انتقال آدرس...',
'USER_LOGIN' => ' ورود - فقط برای اعضا ',
'LOGIN' => 'ورود کاربران',
'USERNAME' => 'نام کاربری',
'PASSWORD' => 'كلمه عبور',
'LOSS_PASSWORD' => 'کلمه عبور را فراموش کرده اید؟',
'LOGINED_BEFORE' => 'شما قبلا وارد اکانت خود شده اید',
'LOGOUT' => 'خروج ',
'EMPTY_FIELDS' => 'خطا...لطفا همه فیلدها را پر کنید!!!',
'LOGIN_SUCCESFUL' => 'شما با موفقیت وارد شدید.',
'LOGIN_ERROR' => 'خطا...ورود ناموفق بود!!!',
'REGISTER_CLOSED' => 'با عرض پوزش ، ثبت نام غیر فعال است!',
'PLACE_NO_YOU' => 'دسترسی به این بخش ممنوع میباشد',
'NOT_EXSIT_USER' => 'کاربر مورد نظر وجود ندارد و یا یوزر این کاربر پاک شده است...!',
'REGISTERED_BEFORE' => 'شما قبلا عضو شدید.',
'REGISTER' => 'عضویت',
'EMAIL' => 'ادرس پست الکترونیکی',
'VERTY_CODE' => 'کد امنیتی:',
'NOTE_CODE' => 'حروف و اعدادی که در شکل می بینید دقیقا وارد کنید',
'WRONG_EMAIL' => 'آدرس پست الکترونیک اشتباه است!',
'WRONG_NAME' => 'نام کاربری باید حداقل 4 حرف باشد!', # CHECK
'EXIST_NAME' => 'این نام قبلا توسط کسی انتخاب شده است.',
'EXIST_EMAIL' => 'این ایمیل قبلا توسط شخصی در سیستم ما ثبت شده است!',
'WRONG_VERTY_CODE' => 'کد امنیتی نادرست است!',
'REGISTER_SUCCESFUL' => 'باتشکر از شما,ثبت نام با موفقیت انجام شد.',
'LOGOUT_SUCCESFUL' => 'با موفقیت خارج شدید.',
'LOGOUT_ERROR' => 'اشکالی در خروج بوجود آمده!',
'DEL_SELECTED' => 'حذف موارد انتخاب شده',
'DEL_ALL' => 'همه پرونده های من را حذف کنید',
'ALL_DELETED' => 'همه پرونده های شما حذف شده اند',
'NO_FILES_DELETE' => 'شما پرونده ای برای حذف ندارید',
'FILES_UPDATED' => 'فایل با موفقیت بروزشد.',
'PUBLIC_USER_FILES' => 'پوشه فایل های کاربر',
'FILEUSER' => 'فایل های کاربران',
'YOUR_FILEUSER' => 'پوشه شما',
'COPY_AND_GET_DUD' => 'شما می توانید این آدرس را کپی کنید و آن را در اختیار دوستانتان قرار دهید تا آنها هم فایل های شما را مشاهده کنند ',
'NO_FILE_USER' => 'فایلی در اکانت شما یافت نشد!',
'CLOSED_FEATURE' => 'این ویژگی غیر فعال است',
'USERFILE_CLOSED' => 'نمایش پوشه های کاربران غیر فعال است!',
'PFILE_4_FORUM' => 'به قسمت مشخصات کاربری بروید تا بتوانید مشخصات خود را ویرایش کنید',
'USER_PLACE' => 'قسمت کاربری',
'PROFILE' => 'پروفایل',
'EDIT_U_DATA' => 'بروزرسانی مشخصات کاربری',
'PASS_ON_CHANGE' => 'ویرایش پسورد',
'OLD' => 'کلمه عبور قبلی',
'NEW' => 'کلمه عبور جدید',
'NEW_AGAIN' => 'دوباره',
'UPDATE' => 'بروزرسانی',
'PASS_O_PASS2' => 'ابتدا كلمه عبور قبلی و سپس کلمه عبور جدید را وارد کنید.',
'DATA_CHANGED_O_LO' => 'اطلاعات شما با موفقیت بروز شدند!',
'CURRENT_PASS_WRONG' => 'کلمه عبور فعلی نادرست وارد شده است! برای تغییر و بروزرسانی اطلاعات باید کلمه عبور را به دقت وارد نمایید.',
'DATA_CHANGED_NO' => 'اطلاعات جدیدی وارد نشده است.',
'LOST_PASS_FORUM' => 'برای تغییر رمز عبور به انجمن بروید.',
'GET_LOSTPASS' => 'بازیابی کلمه عبور',
'E_GET_LOSTPASS' => 'آدرس پست الکترونیک خود را واردکنید تا کلمه عبور جدید را دریافت کنید.',
'WRONG_DB_EMAIL' => 'آدرس ایمیلی که وارد کرده اید ، در دیتابیس ما یافت نشد',
'GET_LOSTPASS_MSG' => "شما درخواست ریست کلمه عبور خود را داده اید,برای جلوگیری از اسپم لطفا بر روی لینک زیر کلیک نمایید : \r\n %1\$s \r\n کلمه عبور جدید: %2\$s",
'CANT_SEND_NEWPASS' => 'خطا...سرور نمی تواند کلمه عبور جدید را ارسال کند!',
'OK_SEND_NEWPASS' => 'ما کلمه عبور جدید را برایتان ارسال کردیم',
'OK_APPLY_NEWPASS' => 'کلمه عبور جدید شما ست شد ، اکنون می توانید وارد اکانت کاربری خود شوید.',
'GUIDE' => 'راهنمای پسوند ها',
'GUIDE_EXP' => 'پسوند های مجاز به همراه محدودیت حجم...',
'EXT' => 'پسوند',
'SIZE' => 'حجم',
'REPORT' => 'گزارش',
'YOURNAME' => 'نام شما',
'URL' => 'ادرس',
'REASON' => 'دلیل (توضیحات)',
'NO_ID' => 'فایلی انتخاب نشده است..!!!',
'NO_ME300RES' => 'توضیحات نمی تواند بیشتر از 300 کاراکتر باشند!!',
'THNX_REPORTED' => 'ما گزارش شما را دریافت کردیم ، متشکریم.',
'RULES' => 'قوانین',
'NO_RULES_NOW' => 'هنوز قانونی وارد نشده',
'E_RULES' => 'قوانین',
'CALL' => 'تماس با ما',
'SEND' => 'ارسال',
'TEXT' => 'توضیحات',
'NO_ME300TEXT' => 'نظرات نمی توانند از 300 کاراکتر بیشتر باشند!!!',
'THNX_CALLED' => 'ارسال شد، به زودی جوابی از جانب ما دریافت می کنید.',
'NO_DEL_F' => 'با عرض پوزش ، حذف آدرس توسط مدیرسایت غیرفعال شده است.',
'E_DEL_F' => 'ادرس حذف فایل',
'WRONG_URL' => 'آدرس را اشتباه وارد کردید..',
'HOME' => 'خانه',
'INDEX' => 'صفحه اصلی',
'SITE_CLOSED' => 'سایت بسته است',
'STOP_FOR_SIZE' => 'سایت در دسترس نمی باشد',
'SIZES_EXCCEDED' => 'با عرض پوزش حجم سرور کنونی ما پر شده است ، لطفا بعدا مراجعه کنید',
'SAFE_CODE' => 'فعال کردن کد امنیتی برای دانلود',
'LAST_VISIT' => 'آخرین بازدید شما',
'FLS_LST_VST_SEARCH' => 'نمایش آخرین فایلها بعد از آخرین بازدید شما؟',
'IMG_LST_VST_SEARCH' => 'نمایش آخرین عکسها بعد از آخرین بازدید شما؟',
'NEXT' => 'بعدی &raquo;',
'PREV' => '&laquo; قبلی',
'INFORMATION' => 'توضیحات',
'WELCOME' => 'خوش آمدید',
'KLEEJA_VERSION' => 'ورژن کلیجا',
'NUMBER_ONLINE' => 'افراد آنلاین',
'USERS_SYSTEM' => 'سیستم کاربران',
'ERROR_NAVIGATATION' => 'خطا در انتقال آدرس...',
'USER_LOGIN' => ' ورود - فقط برای اعضا ',
'LOGIN' => 'ورود کاربران',
'USERNAME' => 'نام کاربری',
'PASSWORD' => 'كلمه عبور',
'LOSS_PASSWORD' => 'کلمه عبور را فراموش کرده اید؟',
'LOGINED_BEFORE' => 'شما قبلا وارد اکانت خود شده اید',
'LOGOUT' => 'خروج ',
'EMPTY_FIELDS' => 'خطا...لطفا همه فیلدها را پر کنید!!!',
'LOGIN_SUCCESFUL' => 'شما با موفقیت وارد شدید.',
'LOGIN_ERROR' => 'خطا...ورود ناموفق بود!!!',
'REGISTER_CLOSED' => 'با عرض پوزش ، ثبت نام غیر فعال است!',
'PLACE_NO_YOU' => 'دسترسی به این بخش ممنوع میباشد',
'NOT_EXSIT_USER' => 'کاربر مورد نظر وجود ندارد و یا یوزر این کاربر پاک شده است...!',
'REGISTERED_BEFORE' => 'شما قبلا عضو شدید.',
'REGISTER' => 'عضویت',
'EMAIL' => 'ادرس پست الکترونیکی',
'VERTY_CODE' => 'کد امنیتی:',
'NOTE_CODE' => 'حروف و اعدادی که در شکل می بینید دقیقا وارد کنید',
'WRONG_EMAIL' => 'آدرس پست الکترونیک اشتباه است!',
'WRONG_NAME' => 'نام کاربری باید حداقل 4 حرف باشد!', // CHECK
'EXIST_NAME' => 'این نام قبلا توسط کسی انتخاب شده است.',
'EXIST_EMAIL' => 'این ایمیل قبلا توسط شخصی در سیستم ما ثبت شده است!',
'WRONG_VERTY_CODE' => 'کد امنیتی نادرست است!',
'REGISTER_SUCCESFUL' => 'باتشکر از شما,ثبت نام با موفقیت انجام شد.',
'LOGOUT_SUCCESFUL' => 'با موفقیت خارج شدید.',
'LOGOUT_ERROR' => 'اشکالی در خروج بوجود آمده!',
'DEL_SELECTED' => 'حذف موارد انتخاب شده',
'DEL_ALL' => 'همه پرونده های من را حذف کنید',
'ALL_DELETED' => 'همه پرونده های شما حذف شده اند',
'NO_FILES_DELETE' => 'شما پرونده ای برای حذف ندارید',
'FILES_UPDATED' => 'فایل با موفقیت بروزشد.',
'PUBLIC_USER_FILES' => 'پوشه فایل های کاربر',
'FILEUSER' => 'فایل های کاربران',
'YOUR_FILEUSER' => 'پوشه شما',
'COPY_AND_GET_DUD' => 'شما می توانید این آدرس را کپی کنید و آن را در اختیار دوستانتان قرار دهید تا آنها هم فایل های شما را مشاهده کنند ',
'NO_FILE_USER' => 'فایلی در اکانت شما یافت نشد!',
'CLOSED_FEATURE' => 'این ویژگی غیر فعال است',
'USERFILE_CLOSED' => 'نمایش پوشه های کاربران غیر فعال است!',
'PFILE_4_FORUM' => 'به قسمت مشخصات کاربری بروید تا بتوانید مشخصات خود را ویرایش کنید',
'USER_PLACE' => 'قسمت کاربری',
'PROFILE' => 'پروفایل',
'EDIT_U_DATA' => 'بروزرسانی مشخصات کاربری',
'PASS_ON_CHANGE' => 'ویرایش پسورد',
'OLD' => 'کلمه عبور قبلی',
'NEW' => 'کلمه عبور جدید',
'NEW_AGAIN' => 'دوباره',
'UPDATE' => 'بروزرسانی',
'PASS_O_PASS2' => 'ابتدا كلمه عبور قبلی و سپس کلمه عبور جدید را وارد کنید.',
'DATA_CHANGED_O_LO' => 'اطلاعات شما با موفقیت بروز شدند!',
'CURRENT_PASS_WRONG' => 'کلمه عبور فعلی نادرست وارد شده است! برای تغییر و بروزرسانی اطلاعات باید کلمه عبور را به دقت وارد نمایید.',
'DATA_CHANGED_NO' => 'اطلاعات جدیدی وارد نشده است.',
'LOST_PASS_FORUM' => 'برای تغییر رمز عبور به انجمن بروید.',
'GET_LOSTPASS' => 'بازیابی کلمه عبور',
'E_GET_LOSTPASS' => 'آدرس پست الکترونیک خود را واردکنید تا کلمه عبور جدید را دریافت کنید.',
'WRONG_DB_EMAIL' => 'آدرس ایمیلی که وارد کرده اید ، در دیتابیس ما یافت نشد',
'GET_LOSTPASS_MSG' => "شما درخواست ریست کلمه عبور خود را داده اید,برای جلوگیری از اسپم لطفا بر روی لینک زیر کلیک نمایید : \r\n %1\$s \r\n کلمه عبور جدید: %2\$s",
'CANT_SEND_NEWPASS' => 'خطا...سرور نمی تواند کلمه عبور جدید را ارسال کند!',
'OK_SEND_NEWPASS' => 'ما کلمه عبور جدید را برایتان ارسال کردیم',
'OK_APPLY_NEWPASS' => 'کلمه عبور جدید شما ست شد ، اکنون می توانید وارد اکانت کاربری خود شوید.',
'GUIDE' => 'راهنمای پسوند ها',
'GUIDE_EXP' => 'پسوند های مجاز به همراه محدودیت حجم...',
'EXT' => 'پسوند',
'SIZE' => 'حجم',
'REPORT' => 'گزارش',
'YOURNAME' => 'نام شما',
'URL' => 'ادرس',
'REASON' => 'دلیل (توضیحات)',
'NO_ID' => 'فایلی انتخاب نشده است..!!!',
'TOTAL_SIZE_EXCEEDED' => 'از اندازه کل فراتر رفته است',
'STORAGE_USAGE' => '<b>%s</b> از <b>%s</b>',
'NO_ME300RES' => 'توضیحات نمی تواند بیشتر از 300 کاراکتر باشند!!',
'THNX_REPORTED' => 'ما گزارش شما را دریافت کردیم ، متشکریم.',
'RULES' => 'قوانین',
'NO_RULES_NOW' => 'هنوز قانونی وارد نشده',
'E_RULES' => 'قوانین',
'CALL' => 'تماس با ما',
'SEND' => 'ارسال',
'TEXT' => 'توضیحات',
'NO_ME300TEXT' => 'نظرات نمی توانند از 300 کاراکتر بیشتر باشند!!!',
'THNX_CALLED' => 'ارسال شد، به زودی جوابی از جانب ما دریافت می کنید.',
'NO_DEL_F' => 'با عرض پوزش ، حذف آدرس توسط مدیرسایت غیرفعال شده است.',
'E_DEL_F' => 'ادرس حذف فایل',
'WRONG_URL' => 'آدرس را اشتباه وارد کردید..',
'DELETE_SUCCESFUL' => 'با موفقیت حذف شد.',
'STATS' => 'امار',
'STATS_CLOSED' => 'آمار سایت توسط مدیریت غیر فعال شده است',
'FILES_ST' => 'اپلود شده',
'FILE' => 'فایل',
'IMAGE' => 'تصویر',
'USERS_ST' => 'مجموع کاربران',
'USER' => 'کاربر',
'SIZES_ST' => 'مجموع حجم فایل های اپلود شده',
//'LSTFLE_ST' => 'اخرین اپلود',
'LSTDELST' => 'آخرین عملیات چک کردن فایلهای دانلود نشده',
'LAST_1_H' => 'امار ساعت گذشته',
'DOWNLAOD' => 'دانلود',
'DOWNLOAD' => 'دانلود',
'FILE_FOUNDED' => 'فایلهای یافت شده..',
'WAIT' => 'لطفا صبر کنید..',
'CLICK_DOWN' => 'برای دریافت فایل کلیک کنید',
'JS_MUST_ON' => 'لطفا جاوا اسکریپت را در مرورگر خود فعال نمایید.',
'FILE_INFO' => 'اطلاعات فایل',
'FILENAME' => 'نام فایل',
'FILESIZE' => 'حجم فایل',
'FILETYPE' => 'نوع فایل',
'FILEDATE' => 'تاریخ فایل',
'LAST_DOWN' => 'اخرین دانلود ',
'FILEUPS' => 'تعداد دانلود ها',
'FILEREPORT' => 'گزارش فایل های خلاف قوانین',
'FILE_NO_FOUNDED' => 'فایل پیدا نشد...!!',
'IMG_NO_FOUNDED' => 'عکس پیدا نشد...!!',
'NOT_IMG' => 'این فایل , عکس نیست!',
'MORE_F_FILES' => 'شما به حداکثر میزان فیلد های خود رسیده اید.',
'DOWNLOAD_F' => '[ اپلود فایل ]',
'DOWNLOAD_T' => '[ دانلود از ادرس ]',
'PAST_URL_HERE' => '[ لینک را اینجا وارد کنید ]',
'SAME_FILE_EXIST' => 'فایل "%s" موجود میباشد, نام ان را تغییر دهید و مجدداد تلاش نمایید.',
'NO_FILE_SELECTED' => 'ابتدا فایلی را انتخاب نمایید!!',
'WRONG_F_NAME' => 'نام فایل "%s" محتوی کلمات غیر مجاز می باشد',
'FORBID_EXT' => 'پسوند "%s" پشتیبانی نمیشود!',
'SIZE_F_BIG' => 'حجم فایل"%1$s" باید کوچکتر از %2$s باشد.',
'URL_F_DEL' => 'آدرس حذف کردن فایل',
'URL_F_THMB' => 'آدرس تصویر بند انگشتی',
'URL_F_FILE' => 'ادرس فایل',
'URL_F_IMG' => 'ادرس عکس',
'URL_F_BBC' => 'آدرس انجمن',
'IMG_DOWNLAODED' => 'عکس با موفقیت آپلود شد.',
'FILE_DOWNLAODED' => 'فایل با موفقیت آپلود شد.',
'CANT_UPLAOD' => 'خطا! به دلیل نامعلوم عملیات اپلود فایل "%s" ناموفق بود!',
'CANT_DIR_CRT' => 'پوشه به صورت خودکار ایجاد نشد, شما باید ان را به صورت دستی ایجاد نمایید.',
'AGREE_RULES' => 'قوانین را میپذیرم.',
'URL_CANT_GET' => 'خطا در دریافت فایل از ادرس..!',
'ADMINCP' => 'کنترل پنل ',
'GO_BACK_BROWSER' => 'بازگشت',
'U_R_BANNED' => 'متاسفانه شما محروم شده اید و نمی توانید از سایت استفاده کنید.',
'U_R_FLOODER' => 'سیستم امنیتی سایت فعال شده است...',
'YES' => 'بلی',
'NO' => 'خیر',
'LANGUAGE' => 'زبان',
'NORMAL' => 'معمولی',
'STYLE' => 'استایل',
'GROUP' => 'دسته',
'UPDATE_FILES' => 'بروزرسانی فایل ها',
'BY' => 'بوسیله',
'FILDER' => 'پوشه',
'DELETE' => 'حذف',
'GUST' => 'میهمان',
'NAME' => 'نام',
'CLICKHERE' => 'کلیک کنید',
'IP' => 'ای پی',
'TIME' => 'زمان',
'RETURN_HOME' => 'بازگشت به صفحه اصلی',
'TODAY' => 'امروز',
'DAYS' => 'روز',
'SUBMIT' => 'ارسال',
'EDIT' => 'ویرایش',
'DISABLE' => 'غیرفعال',
'ENABLE' => 'فعال',
'OPEN' => 'باز',
'NOTE' => 'توضیحات',
'WARN' => 'اخطار',
'BITE' => 'بایت',
'KILOBYTE' => 'كيلوبايت',
'NOT_SAFE_FILE' => 'سیستم كليجا تشخیص داده است که پرونده "%s" ناامن است و حاوی کد مخرب است .. !!',
'ARE_YOU_SURE_DO_THIS' => 'مطمئن هستید؟',
'SITE_FOR_MEMBER_ONLY' => 'این مرکز فقط برای اعضا میباشد, لطفا عضو شوید یا با نام کاربری خود وارد شوید.',
'SHOW_MY_FILECP' => 'نمایش فایل های من',
'PASS_CHANGE' => 'تغییر کلمه عبور',
'EDIT_U_AVATER' => 'ُتغییر اواتار شما',
'EDIT_U_AVATER_LINK' => ' برای تغییر اواتار خود %1$s" کلیک کنید "%2$s , سپس در این سایت با ایمیل خود ثبت نام کنید و اواتار خود را تغییر دهید.',
'MOST_EVER_ONLINE' => 'بیشترین اعضایی که آنلاین بودند ',
'ON' => 'در',
'LAST_REG' => 'جدیدترین عضو',
'NEW_USER' => 'عضو جدید',
'COPYRIGHTS_X' => 'تمامی حقوق محفوظ است',
'CHECK_ALL' => 'علامت زدن همه',
'BROSWERF' => 'فایل های کاربران',
'REMME' => 'مرا به خاطر بسپار',
'REMME_EXP' => 'اگر سیستم شما توسط دیگران مورد استفاده قرار نمیگیرد, این گزینه فعال کنید.',
'HOUR' => 'ساعت',
'5HOURS' => '5 ساعت',
'DAY' => '1 روز',
'WEEK' => '1 هفته',
'MONTH' => '1 ماه',
'YEAR' => '1 سال',
'INVALID_FORM_KEY' => 'دوره زمانی شما پایان یافته است یا اطلاعات نادرست است.',
'INVALID_GET_KEY' => 'متاسفانه , فایل درخواستی شما منقضی شده است و به دلایل امنیتی بلاک شده است, لطفا بعدا تلاش نمایید.',
'REFRESH_CAPTCHA' => 'برای دریافت تصویر جدید CAPTCHA کلیک کنید',
'CHOSE_F' => 'لطفا حداقل یک فایل را انتخاب نمایید.',
'FILES_DELETED' => 'فایل ها با موفقیت حذف شدند.',
'ALL_FILES' => 'مجموع فایل ها',
'ALL_IMAGES' => 'مجموع تصاویر',
'WAIT_LOADING' => 'لطفا صبر کنید, فایل ها در حال اپلود شدن بر روی سرور میباشند !',
'NOTICECLOSED' => 'توجه : وبسایت بسته است',
'UNKNOWN' => 'نامشخص',
'WE_UPDATING_KLEEJA_NOW' => 'برای پاره ای از تغییرات سایت بسته میباشد, به زودی باز خواهیم گشت.',
'ERROR_TRY_AGAIN' => 'خطا, لطفا مجدد سعی نمایید.',
'VIEW' => 'نمایش',
'NONE' => 'هیچ کدام',
'NOTHING' => 'هیچ فایل یا تصویر جدیدی وجود ندارد!!',
'YOU_HAVE_TO_WAIT' => 'لطفا %s ثانیه صبر نمایید, سپس فایل خود را مجددا اپلود نمایید.',
'REPEAT_PASS' => 'تکرار کلمه عبور',
'PASS_NEQ_PASS2' => 'کلمه های عبور با هم , همخوانی ندارند.',
'ADMINS' => 'مدیران',
'GUESTS' => 'میهمان ها',
'USERS' => 'کاربران',
'DELETE_INSTALL_FOLDER' => 'برای شروع کار با کلیجا لطفا پوشه "install" را حذف کنید.',
'HV_NOT_PRVLG_ACCESS' => 'شما اجازه دسترسی به این صفحه را ندارید.',
'DELETE_SUCCESFUL' => 'با موفقیت حذف شد.',
'STATS' => 'امار',
'STATS_CLOSED' => 'آمار سایت توسط مدیریت غیر فعال شده است',
'FILES_ST' => 'اپلود شده',
'FILE' => 'فایل',
'IMAGE' => 'تصویر',
'USERS_ST' => 'مجموع کاربران',
'USER' => 'کاربر',
'USED_SPACE' => 'فضای مورد استفاده',
'SIZES_ST' => 'مجموع حجم فایل های اپلود شده',
//'LSTFLE_ST' => 'اخرین اپلود',
'LSTDELST' => 'آخرین عملیات چک کردن فایلهای دانلود نشده',
'LAST_1_H' => 'امار ساعت گذشته',
'DOWNLAOD' => 'دانلود',
'DOWNLOAD' => 'دانلود',
'FILE_FOUNDED' => 'فایلهای یافت شده..',
'WAIT' => 'لطفا صبر کنید..',
'CLICK_DOWN' => 'برای دریافت فایل کلیک کنید',
'JS_MUST_ON' => 'لطفا جاوا اسکریپت را در مرورگر خود فعال نمایید.',
'FILE_INFO' => 'اطلاعات فایل',
'FILENAME' => 'نام فایل',
'FILESIZE' => 'حجم فایل',
'FILETYPE' => 'نوع فایل',
'FILEDATE' => 'تاریخ فایل',
'LAST_DOWN' => 'اخرین دانلود ',
'FILEUPS' => 'تعداد دانلود ها',
'FILEREPORT' => 'گزارش فایل های خلاف قوانین',
'FILE_NO_FOUNDED' => 'فایل پیدا نشد...!!',
'IMG_NO_FOUNDED' => 'عکس پیدا نشد...!!',
'NOT_IMG' => 'این فایل , عکس نیست!',
'MORE_F_FILES' => 'شما به حداکثر میزان فیلد های خود رسیده اید.',
'DOWNLOAD_F' => '[ اپلود فایل ]',
'DOWNLOAD_T' => '[ دانلود از ادرس ]',
'PAST_URL_HERE' => '[ لینک را اینجا وارد کنید ]',
'SAME_FILE_EXIST' => 'فایل "%s" موجود میباشد, نام ان را تغییر دهید و مجدداد تلاش نمایید.',
'NO_FILE_SELECTED' => 'ابتدا فایلی را انتخاب نمایید!!',
'WRONG_F_NAME' => 'نام فایل "%s" محتوی کلمات غیر مجاز می باشد',
'FORBID_EXT' => 'پسوند "%s" پشتیبانی نمیشود!',
'SIZE_F_BIG' => 'حجم فایل"%1$s" باید کوچکتر از %2$s باشد.',
'URL_F_DEL' => 'آدرس حذف کردن فایل',
'URL_F_THMB' => 'آدرس تصویر بند انگشتی',
'URL_F_FILE' => 'ادرس فایل',
'URL_F_IMG' => 'ادرس عکس',
'URL_F_BBC' => 'آدرس انجمن',
'IMG_DOWNLAODED' => 'عکس با موفقیت آپلود شد.',
'FILE_DOWNLAODED' => 'فایل با موفقیت آپلود شد.',
'CANT_UPLAOD' => 'خطا! به دلیل نامعلوم عملیات اپلود فایل "%s" ناموفق بود!',
'CANT_DIR_CRT' => 'پوشه به صورت خودکار ایجاد نشد, شما باید ان را به صورت دستی ایجاد نمایید.',
'AGREE_RULES' => 'قوانین را میپذیرم.',
'URL_CANT_GET' => 'خطا در دریافت فایل از ادرس..!',
'ADMINCP' => 'کنترل پنل ',
'GO_BACK_BROWSER' => 'بازگشت',
'U_R_BANNED' => 'متاسفانه شما محروم شده اید و نمی توانید از سایت استفاده کنید.',
'U_R_FLOODER' => 'سیستم امنیتی سایت فعال شده است...',
'YES' => 'بلی',
'NO' => 'خیر',
'LANGUAGE' => 'زبان',
'NORMAL' => 'معمولی',
'STYLE' => 'استایل',
'GROUP' => 'دسته',
'UPDATE_FILES' => 'بروزرسانی فایل ها',
'BY' => 'بوسیله',
'FILDER' => 'پوشه',
'DELETE' => 'حذف',
'GUST' => یهمان',
'NAME' => 'نام',
'CLICKHERE' => 'کلیک کنید',
'IP' => 'ای پی',
'TIME' => 'زمان',
'RETURN_HOME' => 'بازگشت به صفحه اصلی',
'TODAY' => 'امروز',
'DAYS' => 'روز',
'SUBMIT' => 'ارسال',
'EDIT' => 'ویرایش',
'DISABLE' => 'غیرفعال',
'ENABLE' => 'فعال',
'OPEN' => 'باز',
'NOTE' => 'توضیحات',
'WARN' => 'اخطار',
'BITE' => 'بایت',
'KILOBYTE' => 'كيلوبايت',
'NOT_SAFE_FILE' => 'سیستم كليجا تشخیص داده است که پرونده "%s" ناامن است و حاوی کد مخرب است .. !!',
'ARE_YOU_SURE_DO_THIS' => 'مطمئن هستید؟',
'SITE_FOR_MEMBER_ONLY' => 'این مرکز فقط برای اعضا میباشد, لطفا عضو شوید یا با نام کاربری خود وارد شوید.',
'SHOW_MY_FILECP' => 'نمایش فایل های من',
'PASS_CHANGE' => 'تغییر کلمه عبور',
'EDIT_U_AVATER' => 'ُتغییر اواتار شما',
'EDIT_U_AVATER_LINK' => ' برای تغییر اواتار خود %1$s" کلیک کنید "%2$s , سپس در این سایت با ایمیل خود ثبت نام کنید و اواتار خود را تغییر دهید.',
'MOST_EVER_ONLINE' => 'بیشترین اعضایی که آنلاین بودند ',
'ON' => 'در',
'LAST_REG' => 'جدیدترین عضو',
'NEW_USER' => 'عضو جدید',
'COPYRIGHTS_X' => 'تمامی حقوق محفوظ است',
'CHECK_ALL' => 'علامت زدن همه',
'BROSWERF' => 'فایل های کاربران',
'REMME' => 'مرا به خاطر بسپار',
'REMME_EXP' => 'اگر سیستم شما توسط دیگران مورد استفاده قرار نمیگیرد, این گزینه فعال کنید.',
'HOUR' => 'ساعت',
'5HOURS' => '5 ساعت',
'DAY' => '1 روز',
'WEEK' => '1 هفته',
'MONTH' => '1 ماه',
'YEAR' => '1 سال',
'INVALID_FORM_KEY' => 'دوره زمانی شما پایان یافته است یا اطلاعات نادرست است.',
'INVALID_GET_KEY' => 'متاسفانه , فایل درخواستی شما منقضی شده است و به دلایل امنیتی بلاک شده است, لطفا بعدا تلاش نمایید.',
'REFRESH_CAPTCHA' => 'برای دریافت تصویر جدید CAPTCHA کلیک کنید',
'CHOSE_F' => 'لطفا حداقل یک فایل را انتخاب نمایید.',
'FILES_DELETED' => 'فایل ها با موفقیت حذف شدند.',
'ALL_FILES' => 'مجموع فایل ها',
'ALL_IMAGES' => 'مجموع تصاویر',
'WAIT_LOADING' => 'لطفا صبر کنید, فایل ها در حال اپلود شدن بر روی سرور میباشند !',
'LOADING' => 'در حال بارگذاري',
'NOTICECLOSED' => 'توجه : وبسایت بسته است',
'UNKNOWN' => 'نامشخص',
'WE_UPDATING_KLEEJA_NOW' => 'برای پاره ای از تغییرات سایت بسته میباشد, به زودی باز خواهیم گشت.',
'ERROR_TRY_AGAIN' => 'خطا, لطفا مجدد سعی نمایید.',
'VIEW' => 'نمایش',
'NONE' => 'هیچ کدام',
'NOTHING' => 'هیچ فایل یا تصویر جدیدی وجود ندارد!!',
'YOU_HAVE_TO_WAIT' => 'لطفا %s ثانیه صبر نمایید, سپس فایل خود را مجددا اپلود نمایید.',
'REPEAT_PASS' => 'تکرار کلمه عبور',
'PASS_NEQ_PASS2' => 'کلمه های عبور با هم , همخوانی ندارند.',
'ADMINS' => 'مدیران',
'GUESTS' => 'میهمان ها',
'USERS' => 'کاربران',
'DELETE_INSTALL_FOLDER' => 'برای شروع کار با کلیجا لطفا پوشه "install" را حذف کنید.',
'HV_NOT_PRVLG_ACCESS' => 'شما اجازه دسترسی به این صفحه را ندارید.',
'W_PERIODS_0' => 'یک لحظه',
'W_PERIODS_0' => 'یک لحظه',
'W_PERIODS_1' => 'دقیق',
'W_PERIODS_2' => 'ساعت',
'W_PERIODS_3' => 'روز',
@@ -261,22 +265,25 @@ return [
'W_PERIODS_P_5' => 'ماه ها',
'W_PERIODS_P_6' => 'سال ها',
'W_PERIODS_P_7' => 'دهه ها',
'W_FROM' => '',
'W_AGO' => 'قبل',
'TIME_PM' => 'عصر',
'TIME_AM' => 'صبح',
'NOT_YET' => 'هنوز نه!',
'NOT_FOUND' => 'فایل مورد نظر وجود ندارد!',
'TIME_ZONE' => 'منطقه زمانی',
'OR' => 'یا',
'AND' => 'و',
'CHANGE' => 'تغییر',
'FOR' => 'برای',
'ALL' => 'همه',
'NOW' => 'اکنون',
'EMAIL_CHANGE_REQ_PASS' => 'برای تغییر ایمیل خود ، باید گذرواژه فعلی خود را تایپ کنید.',
'DRAG_AND_DROP' => 'برای بارگذاری یک پرونده اینجا را بکشید و رها کنید&hellip;',
'OR_MANUAL_SELECT' => 'یا برای انتخاب دستی <em>اینجا را کلیک کنید</em>.',
'W_FROM' => '',
'W_AGO' => 'قبل',
'TIME_PM' => 'عصر',
'TIME_AM' => 'صبح',
'NOT_YET' => 'هنوز نه!',
'NOT_FOUND' => 'فایل مورد نظر وجود ندارد!',
'TIME_ZONE' => 'منطقه زمانی',
'OR' => 'یا',
'AND' => 'و',
'CHANGE' => 'تغییر',
'FOR' => 'برای',
'ALL' => 'همه',
'NOW' => 'اکنون',
'EMAIL_CHANGE_REQ_PASS' => 'برای تغییر ایمیل خود ، باید گذرواژه فعلی خود را تایپ کنید.',
'DRAG_AND_DROP' => 'برای بارگذاری یک پرونده اینجا را بکشید و رها کنید&hellip;',
'OR_MANUAL_SELECT' => 'یا برای انتخاب دستی <em>اینجا را کلیک کنید</em>.',
'ABOUT_FILE' => 'اطلاعات فایل',
'FILE_NO_INFO' => 'اطلاعاتی در مورد این فایل یافت نشد',
'SAVE' => 'ذخیره',
];

View File

@@ -6,106 +6,106 @@
return [
'DIR' => 'rtl',
'INST_INSTALL_WIZARD' => 'نصب برنامه',
'INST_INSTALL_CLEAN_VER' => 'نصب جديد',
'INST_UPDATE_P_VER' => 'بروزرساني ',
'INST_AGR_LICENSE' => 'من قوانين رو ميپذيرم',
'INST_NEXT' => 'بعدي',
'INST_PREVIOUS' => 'بازگشت',
'INST_SITE_INFO' => 'اطلاعات وب سايت',
'INST_ADMIN_INFO' => 'اطلاعات مدير',
'INST_CHANG_CONFIG' => 'لطفا فايل config.php را بررسي کنيد. بايد دسترسي فايل 777 باشد و اطلاعات ديتا بيس شما در ان وارد شده باشد.',
'INST_CONNCET_ERR' => 'ناتوان در اتصال به سرور...',
'INST_CONNCET_ERR_SQLITE' => 'اطمینان حاصل کنید که یک پرونده در پوشه اصلی كليجا با نام وجود دارد:%s.',
'INST_NO_WRTABLE' => 'پوشه مورد نظر حق دسترسي نوشتن را ندارد. (در اکثر موارد بايد دسترسي 777 باشد)',
'INST_GOOD_GO' => 'به نظر ميرسيد همه چيز صحيح است... ادامه...!',
'INST_MSGINS' => 'به سرويس آپلودسنتر ما خوش آمديد ، شما مي توانيد تمامي فايل هايي را که از نظر ما مجاز است ، بر روي اين سرور آپلود کنيد',
'INST_CRT_CALL' => 'جدول نظرات ایجاد شد.',
'INST_CRT_ONL' => 'جدول کاربران انلاين ساخته شد.',
'INST_CRT_REPRS' => 'جدول گزارشات ساخته شد.',
'INST_CRT_STS' => 'جدول امار ساخته شد.',
'INST_CRT_USRS' => 'جدول کاربران ساخته شد.',
'INST_CRT_ADM' => 'جزئيات مدير ساخته شد.',
'INST_CRT_FLS' => 'جدول فايل ها ساخته شد.',
'INST_CRT_CNF' => 'جدول تنظيمات ساخته شد.',
'INST_CRT_EXT' => 'جدول افزونه ها ساخته شد.',
'INST_CRT_HKS' => 'جدول پلاگين ها ساخته شد.',
'INST_CRT_LNG' => 'جدول زبان ها ساخته شد.',
'INST_CRT_PLG' => 'جدول افزونه ها ساخته شد.',
'INST_SQL_ERR' => 'خطا در بروزرساني پايگاه داده..!',
'INST_FINISH_SQL' => 'کليجا با موفقيت نصب شد.',
'INST_NOTES' => 'نکات نصب ..!',
'INST_END' => 'مراحل نصب با موفقيت انجام شد. لطفا براي راه اندازي سايت پوشه INSTALL را حذف نماييد..!',
'INST_NOTE_D' => 'هرگونه مشکل يا سوال خود را با تيم پيشبرد کليجا درميان گذاريد يا در وب سايت رپيدليچ پارسي مطرح نماييد..!',
'INST_FINISH_ERRSQL' => 'متاسفانه ! مشکلي در عمليات بوجود امده است, لطفا دوباره مجددا تلاش نماييد.',
'INST_KLEEJADEVELOPERS' => 'با تشکر از استفاده ي شما از كليجا اميدواريم ساعات خوشي داشته باشيد',
'SITENAME' => 'عنوان وب سايت',
'SITEURL' => 'ادرس وب سايت',
'SITEMAIL' => 'ايميل وب سايت',
'USERNAME' => 'نام کاربري مديريت',
'PASSWORD' => 'کلمه عبور',
'PASSWORD2' => 'تايپ مجدد کلمه عبور',
'EMAIL' => 'پست الکترونيکي',
'INDEX' => 'صفحه اصلي',
'ADMINCP' => 'کنترل پنل',
'EMPTY_FIELDS' => 'لطفا همه اطلاعات ضروري را تکميل نماييد.',
'WRONG_EMAIL' => 'ادرس پست الکترونيکي که وارد کرده ايد معتبر نيست!',
'DB_INFO_NW' => 'اطلاعات ديتابيس خود را با دقت وارد کرده..سپس بر روي گزينه بعدي کليک نماييد و نصاب براي شما فايل config.php را خواهد ساخت.سپس ان را در دايرکتوري اصلي اپلود نماييد..!',
'DB_INFO' => 'اطلاعات ديتابيس را وارد نماييد..!',
'DB_SERVER' => 'هاست (ميزبان)',
'DB_TYPE' => 'نوع ديتابيس',
'DB_TYPE_MYSQL' => 'MySQL',
'DB_TYPE_SQLITE' => 'SQLite',
'DB_USER' => 'نام کاربري ديتابيس',
'DB_PASSWORD' => 'کلمه عبور ديتابيس',
'DB_NAME' => 'نام ديتابيس',
'DB_PREFIX' => 'پيشوند جداول (Tables prefix)',
'VALIDATING_FORM_WRONG' => 'لطفا همه فيلدهاي مورد نياز را کامل کنيد..!',
'CONFIG_EXISTS' => 'فايل config.php يافت شد,ادامه...',
'INST_SUBMIT_CONFIGOK' => 'فايل را در پوشه اصلي اپلود نماييد.',
'INST_EXPORT' => 'برون ريزي فايل (دريافت فايل اماده)',
'INST_OTHER_INFO' => 'ديگر اطلاعات',
'URLS_TYPES' => 'نحوه ادرس دهي فايل ها',
'DEFAULT' => 'پيش فرض',
'FILENAME_URL' => 'بر اساس نام فايل',
'DIRECT_URL' => 'لينک مستقيم',
'LIKE_THIS' => 'مثال: ',
'DIR' => 'rtl',
'INST_INSTALL_WIZARD' => 'نصب برنامه',
'INST_INSTALL_CLEAN_VER' => 'نصب جديد',
'INST_UPDATE_P_VER' => 'بروزرساني ',
'INST_AGR_LICENSE' => 'من قوانين رو ميپذيرم',
'INST_NEXT' => 'بعدي',
'INST_PREVIOUS' => 'بازگشت',
'INST_SITE_INFO' => 'اطلاعات وب سايت',
'INST_ADMIN_INFO' => 'اطلاعات مدير',
'INST_CHANG_CONFIG' => 'لطفا فايل config.php را بررسي کنيد. بايد دسترسي فايل 777 باشد و اطلاعات ديتا بيس شما در ان وارد شده باشد.',
'INST_CONNCET_ERR' => 'ناتوان در اتصال به سرور...',
'INST_CONNCET_ERR_SQLITE' => 'اطمینان حاصل کنید که یک پرونده در پوشه اصلی كليجا با نام وجود دارد:%s.',
'INST_NO_WRTABLE' => 'پوشه مورد نظر حق دسترسي نوشتن را ندارد. (در اکثر موارد بايد دسترسي 777 باشد)',
'INST_GOOD_GO' => 'به نظر ميرسيد همه چيز صحيح است... ادامه...!',
'INST_MSGINS' => 'به سرويس آپلودسنتر ما خوش آمديد ، شما مي توانيد تمامي فايل هايي را که از نظر ما مجاز است ، بر روي اين سرور آپلود کنيد',
'INST_CRT_CALL' => 'جدول نظرات ایجاد شد.',
'INST_CRT_ONL' => 'جدول کاربران انلاين ساخته شد.',
'INST_CRT_REPRS' => 'جدول گزارشات ساخته شد.',
'INST_CRT_STS' => 'جدول امار ساخته شد.',
'INST_CRT_USRS' => 'جدول کاربران ساخته شد.',
'INST_CRT_ADM' => 'جزئيات مدير ساخته شد.',
'INST_CRT_FLS' => 'جدول فايل ها ساخته شد.',
'INST_CRT_CNF' => 'جدول تنظيمات ساخته شد.',
'INST_CRT_EXT' => 'جدول افزونه ها ساخته شد.',
'INST_CRT_HKS' => 'جدول پلاگين ها ساخته شد.',
'INST_CRT_LNG' => 'جدول زبان ها ساخته شد.',
'INST_CRT_PLG' => 'جدول افزونه ها ساخته شد.',
'INST_SQL_ERR' => 'خطا در بروزرساني پايگاه داده..!',
'INST_FINISH_SQL' => 'کليجا با موفقيت نصب شد.',
'INST_NOTES' => 'نکات نصب ..!',
'INST_END' => 'مراحل نصب با موفقيت انجام شد. لطفا براي راه اندازي سايت پوشه INSTALL را حذف نماييد..!',
'INST_NOTE_D' => 'هرگونه مشکل يا سوال خود را با تيم پيشبرد کليجا درميان گذاريد يا در وب سايت رپيدليچ پارسي مطرح نماييد..!',
'INST_FINISH_ERRSQL' => 'متاسفانه ! مشکلي در عمليات بوجود امده است, لطفا دوباره مجددا تلاش نماييد.',
'INST_KLEEJADEVELOPERS' => 'با تشکر از استفاده ي شما از كليجا اميدواريم ساعات خوشي داشته باشيد',
'SITENAME' => 'عنوان وب سايت',
'SITEURL' => 'ادرس وب سايت',
'SITEMAIL' => 'ايميل وب سايت',
'USERNAME' => 'نام کاربري مديريت',
'PASSWORD' => 'کلمه عبور',
'PASSWORD2' => 'تايپ مجدد کلمه عبور',
'EMAIL' => 'پست الکترونيکي',
'INDEX' => 'صفحه اصلي',
'ADMINCP' => 'کنترل پنل',
'EMPTY_FIELDS' => 'لطفا همه اطلاعات ضروري را تکميل نماييد.',
'WRONG_EMAIL' => 'ادرس پست الکترونيکي که وارد کرده ايد معتبر نيست!',
'FUNCTIONS_CHECK' => 'چک کردن توابع ضروري',
'RE_CHECK' => 'چک کردن مجدد',
'FUNCTION_IS_NOT_EXISTS' => 'تابع % غيرفعال است.',
'FUNCTION_IS_EXISTS' => 'تابع %s فعال است .',
'FUNCTION_DISC_UNLINK' => 'تابع Unlink براي حذف و برزرساني کش فايل ها به کار ميرود.',
'FUNCTION_DISC_GD' => 'تابع imagecreatetruecolor تابعي از کتابخانه GD هست ، که تصاوير بندانگشتي مي سازد و عکس ها را کنترل مي کند',
'FUNCTION_DISC_FOPEN' => 'تابع fopen کنترل استايل ها و فايل ها را در کليجا به عهده دارد.',
'FUNCTION_DISC_MUF' => 'تابع move_uploaded_file باري آپلود فايل ها مورد استفاده قرار مي گيرد و يکي از مهمترين توابع اين برنامه (کليجا) است.',
'ADVICES_CHECK' => 'چک کردن پيشرفته (اختياري)',
'ZIPARCHIVE_LIB' => '<span style = "color: red؛ padding: 0 6px"> كتابخانه ZipArchive بر روي سرور شما در دسترس نيست!',
//UPDATE
'INST_UPDATE_CUR_VER_IS_UP' => 'نسخه فعلي شما از اين اپديت , بروز تر است..!',
'DB_INFO_NW' => 'اطلاعات ديتابيس خود را با دقت وارد کرده..سپس بر روي گزينه بعدي کليک نماييد و نصاب براي شما فايل config.php را خواهد ساخت.سپس ان را در دايرکتوري اصلي اپلود نماييد..!',
'DB_INFO' => 'اطلاعات ديتابيس را وارد نماييد..!',
'DB_SERVER' => 'هاست (ميزبان)',
'DB_TYPE' => 'نوع ديتابيس',
'DB_TYPE_MYSQLI' => 'MySQL Improved',
'DB_TYPE_SQLITE' => 'SQLite',
'DB_USER' => 'نام کاربري ديتابيس',
'DB_PASSWORD' => 'کلمه عبور ديتابيس',
'DB_NAME' => 'نام ديتابيس',
'DB_PREFIX' => 'پيشوند جداول (Tables prefix)',
'VALIDATING_FORM_WRONG' => 'لطفا همه فيلدهاي مورد نياز را کامل کنيد..!',
'CONFIG_EXISTS' => 'فايل config.php يافت شد,ادامه...',
'INST_SUBMIT_CONFIGOK' => 'فايل را در پوشه اصلي اپلود نماييد.',
'INST_EXPORT' => 'برون ريزي فايل (دريافت فايل اماده)',
'INST_OTHER_INFO' => 'ديگر اطلاعات',
'URLS_TYPES' => 'نحوه ادرس دهي فايل ها',
'DEFAULT' => 'پيش فرض',
'FILENAME_URL' => 'بر اساس نام فايل',
'DIRECT_URL' => 'لينک مستقيم',
'LIKE_THIS' => 'مثال: ',
'INST_UPDATE_IS_FINISH' => 'نصب با موفقيت به پايان رسيد!لطفا پوشه INSTALL را پاک کنيد.',
'FUNCTIONS_CHECK' => 'چک کردن توابع ضروري',
'RE_CHECK' => 'چک کردن مجدد',
'FUNCTION_IS_NOT_EXISTS' => 'تابع % غيرفعال است.',
'FUNCTION_IS_EXISTS' => 'تابع %s فعال است .',
'FUNCTION_DISC_UNLINK' => 'تابع Unlink براي حذف و برزرساني کش فايل ها به کار ميرود.',
'FUNCTION_DISC_GD' => 'تابع imagecreatetruecolor تابعي از کتابخانه GD هست ، که تصاوير بندانگشتي مي سازد و عکس ها را کنترل مي کند',
'FUNCTION_DISC_FOPEN' => 'تابع fopen کنترل استايل ها و فايل ها را در کليجا به عهده دارد.',
'FUNCTION_DISC_MUF' => 'تابع move_uploaded_file باري آپلود فايل ها مورد استفاده قرار مي گيرد و يکي از مهمترين توابع اين برنامه (کليجا) است.',
'INST_PHP_LESSMIN' => 'شما به php %1$s يا بالاتر احتياج داريد ، نسخه فعلي شما %2$s است',
'INST_MYSQL_LESSMIN' => 'شما به MySQL %1$s يا بالاتر احتياج داريد ، نسخه فعلي شما %2$است',
'IS_IT_OFFICIAL' => 'آيا اين نسخه را مستقيما از سايت اصلي دانلود کرديد؟',
'IS_IT_OFFICIAL_DESC' => 'ما گزارش هايي از نقاط مختلف دريافت کرديم که باگ ها و مشکلات زيادي در سيستم کليجا وجود دارد، اما همگي آنها ناشي از اين بوده که فايل ، از سايت اصلي ما دريافت نشده<br /><br /> <fon style="color:#154188;border-bottom:1px dashed #154188;padding:4px 0;"> بنابر اين ، آيا شما مطمئنيد که اين فايل را از سايت اصلي دانلود کرده ايد؟</font>',
'INST_WHAT_IS_KLEEJA_T' => 'كليجا چیست؟',
'INST_WHAT_IS_KLEEJA' => 'کليجا رايگان است ، برنامه ايست که بوسيله آن مي توانيد سايت آپلودسنتر عکس و فايل داشته باشيد ، هدف از ايجاد پروژه کليجا ، کمک به وبمستران براي داشتن سيستم آپلودسنتر قوي و آراسته بوده است.کليجا سورس کد هاي قابل خواندن وآساني دارد و سيستمي قوي و کاربرگراست ، همچنين از سيستم template base پشتيباني مي کند و شما مي توانيد به راحتي استايل هاي آن را ويرايش کنيد ',
'INST_SPECIAL_KLEEJA' => 'برخي از ويژگي هاي کليجا..!',
'INST_WHAT_IS_KLEEJA_ONE' => 'کليجا سيستم مديريتي و کاربرگرايي فوق العاده قوي برخوردار است ،سيستم مديريتي آن بسيار ساده است و بوسيله آن مي توان کنترل کاملي روي وبسايت داشت ، همچنين مي توان به راحتي براي آن پوسته ساخت، يا پوسته هاي آن را ويرايش کرد. نکته ي حائز اهميت بعدي ، امکان نصب انواع اضافات و پلاگين هاست که با مراجعه به <a target="_blank" href="http://www.kleeja.com/about/">سايت اصلي </a>مي توان آنها را دانلود و استفاده کرد',
'YES' => 'بلي',
'NO' => 'خير',
'ADVICES_CHECK' => 'چک کردن پيشرفته (اختياري)',
'ZIPARCHIVE_LIB' => '<span style = "color: red؛ padding: 0 6px"> كتابخانه ZipArchive بر روي سرور شما در دسترس نيست!',
'KLEEJA_TEAM_MSG_NAME' => 'تيم پيشبرنده کليجا',
'KLEEJA_TEAM_MSG_TEXT' => "از اینکه كليجا را برای قدرت بخشیدن به وب سایت خود انتخاب کردید متشکریم،\n ما واقعاً امیدواریم که از تجربه بی نظیری که كليجا به شما ارائه می دهد لذت ببرید.\nفراموش نکنید که برای به روزرسانی های آینده به https://kleeja.net مراجعه کنید، برای گزارش اشکالات / مشکلات لطفاً از <a href=\"https://github.com/kleeja-official/kleeja/issues\">صفحه مشکلات</a> ما دیدن کنید",
//UPDATE
'INST_UPDATE_CUR_VER_IS_UP' => 'نسخه فعلي شما از اين اپديت , بروز تر است..!',
'INST_UPDATE_IS_FINISH' => 'نصب با موفقيت به پايان رسيد!لطفا پوشه INSTALL را پاک کنيد.',
'INST_PHP_LESSMIN' => 'شما به php %1$s يا بالاتر احتياج داريد ، نسخه فعلي شما %2$s است',
'INST_MYSQL_LESSMIN' => 'شما به MySQL %1$s يا بالاتر احتياج داريد ، نسخه فعلي شما %2$است',
'IS_IT_OFFICIAL' => 'آيا اين نسخه را مستقيما از سايت اصلي دانلود کرديد؟',
'IS_IT_OFFICIAL_DESC' => 'ما گزارش هايي از نقاط مختلف دريافت کرديم که باگ ها و مشکلات زيادي در سيستم کليجا وجود دارد، اما همگي آنها ناشي از اين بوده که فايل ، از سايت اصلي ما دريافت نشده<br /><br /> <fon style="color:#154188;border-bottom:1px dashed #154188;padding:4px 0;"> بنابر اين ، آيا شما مطمئنيد که اين فايل را از سايت اصلي دانلود کرده ايد؟</font>',
'INST_WHAT_IS_KLEEJA_T' => 'كليجا چیست؟',
'INST_WHAT_IS_KLEEJA' => 'کليجا رايگان است ، برنامه ايست که بوسيله آن مي توانيد سايت آپلودسنتر عکس و فايل داشته باشيد ، هدف از ايجاد پروژه کليجا ، کمک به وبمستران براي داشتن سيستم آپلودسنتر قوي و آراسته بوده است.کليجا سورس کد هاي قابل خواندن وآساني دارد و سيستمي قوي و کاربرگراست ، همچنين از سيستم template base پشتيباني مي کند و شما مي توانيد به راحتي استايل هاي آن را ويرايش کنيد ',
'INST_SPECIAL_KLEEJA' => 'برخي از ويژگي هاي کليجا..!',
'INST_WHAT_IS_KLEEJA_ONE' => 'کليجا سيستم مديريتي و کاربرگرايي فوق العاده قوي برخوردار است ،سيستم مديريتي آن بسيار ساده است و بوسيله آن مي توان کنترل کاملي روي وبسايت داشت ، همچنين مي توان به راحتي براي آن پوسته ساخت، يا پوسته هاي آن را ويرايش کرد. نکته ي حائز اهميت بعدي ، امکان نصب انواع اضافات و پلاگين هاست که با مراجعه به <a target="_blank" href="http://www.kleeja.com/about/">سايت اصلي </a>مي توان آنها را دانلود و استفاده کرد',
'YES' => 'بلي',
'NO' => 'خير',
'KLEEJA_TEAM_MSG_NAME' => 'تيم پيشبرنده کليجا',
'KLEEJA_TEAM_MSG_TEXT' => "از اینکه كليجا را برای قدرت بخشیدن به وب سایت خود انتخاب کردید متشکریم،\n ما واقعاً امیدواریم که از تجربه بی نظیری که كليجا به شما ارائه می دهد لذت ببرید.\nفراموش نکنید که برای به روزرسانی های آینده به https://kleeja.net مراجعه کنید، برای گزارش اشکالات / مشکلات لطفاً از <a href=\"https://github.com/kleeja-official/kleeja/issues\">صفحه مشکلات</a> ما دیدن کنید",
];

View File

@@ -47,7 +47,7 @@ if (file_exists('plugins_rules.php'))
}
$base_folder = str_replace('/serve.php', '', parse_url('http://' . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF'], PHP_URL_PATH));
$request_uri = preg_replace('/^'. preg_quote($base_folder, '/') . '\//', '', strtok($_SERVER['REQUEST_URI'], '?'));
$request_uri = preg_replace('/^' . preg_quote($base_folder, '/') . '\//', '', strtok($_SERVER['REQUEST_URI'], '?'));
foreach ($rules as $rule_regex => $rule_result)
{

File diff suppressed because one or more lines are too long

View File

@@ -64,6 +64,26 @@
</div>
<div class="card">
<div class="card-header">
<div class="d-flex justify-content-between p-1">
{lang.ABOUT_FILE}
<IF NAME="isFileOwnerOfFounder">
<a href="javascript: void(0)" id="about_edit_save" class="btn btn-primary btn-sm py-0">{lang.EDIT}</a>
</IF>
</div>
</div>
<div class="list-group list-group-flush">
<div class="card">
<div id="about_holder" class="card-body">
<p id="about_content">{about_file}</p>
<div class="form-group" >
<textarea class="form-control" id="edit_textarea" style="display: none;" rows="3"></textarea>
</div>
</div>
</div>
</div>
</div>
@@ -85,5 +105,32 @@ function ti()
document.getElementById("url").innerHTML = '<p class="download"><a href="{url_file}" target="_blank" class="btn btn-outline-primary btn-lg">{lang.CLICK_DOWN}<\/a><br /><span class="badge badge-default">{size}<\/span><\/p>';
}
}
let about_edit_save = document.getElementById('about_edit_save');
let about_content = document.getElementById('about_content');
let edit_textarea = document.getElementById('edit_textarea');
about_edit_save.onclick = () => {
switch (about_edit_save.textContent) {
case '{lang.SAVE}':
about_content.innerHTML = edit_textarea.value == '' ? '{lang.FILE_NO_INFO}' : edit_textarea.value;
about_content.style.display = '';
edit_textarea.style.display = 'none';
about_edit_save.innerHTML = '{lang.EDIT}';
ajaxRemote('POST', '{config.siteurl}do.php?id={id}', 'change_file_about=1&about=' + edit_textarea.value, (request) => {})
break;
case '{lang.EDIT}':
edit_textarea.value = about_content.textContent == '{lang.FILE_NO_INFO}' ? '' : about_content.textContent;
about_content.style.display = 'none';
edit_textarea.style.display = '';
about_edit_save.innerHTML = '{lang.SAVE}'
break;
default:
break;
}
}
//-->
</script>

View File

@@ -93,6 +93,19 @@
</form>
<!-- user storage -->
<div class="card mb-3">
<div class="card-header">{lang.USED_SPACE}</div>
<div class="card-body text-center">
<span>{storage_usage_str}</span>
<IF NAME="is_limited">
<div class="progress mt-1">
<div role="progressbar" aria-valuemin="0" aria-valuemax="100" style="width: {storage_per}%" aria-valuenow="{storage_per}" class="progress-bar bg-(storage_per gte 90?danger:primary)">{storage_per}%</div>
</div>
</IF>
</div>
</div>
<!-- link user folder -->
<div class="card">
<div class="card-header copylink">{lang.COPY_AND_GET_DUD}</div>

View File

@@ -38,7 +38,9 @@
<script type="text/javascript" src="{STYLE_PATH}js/jquery.min.js"></script>
<script type="text/javascript" src="{STYLE_PATH}js/popper.min.js"></script>
<script type="text/javascript" src="{STYLE_PATH}js/bootstrap.min.js"></script>
<script type="text/javascript" src="{STYLE_PATH}js/script.js"></script>
<!-- don't ever delete this -->
{run_queue}
@@ -74,6 +76,7 @@ $(document).ready(function(){
$("#uploader input:file").change(function (){
if(!check_selected_file(this)){
$(this).val('');
this.dataset.previousSize = 0; // Reset previous size if file is invalid
}else{
if($(this).data('number') !== null){
var selected_text = $('#file-text' + $(this).data('number'));
@@ -94,6 +97,8 @@ $(document).ready(function(){
var allowed_exts = {js_allowed_extensions_types};
var allowed_sizes = {js_allowed_extensions_sizes};
var remaining_storage = {remaining_storage};
var totalSize = 0;
function check_selected_file(file) {
var selected_file = file.files[0];
@@ -122,6 +127,19 @@ function check_selected_file(file) {
}
}
// Subtract the previous file size and add the new file size
var previousSize = parseInt(file.dataset.previousSize || 0);
totalSize = totalSize - previousSize + file_size;
if (remaining_storage != -1 && totalSize > remaining_storage){
totalSize = totalSize - file_size + previousSize; // Revert the change
alert('{lang.TOTAL_SIZE_EXCEEDED}');
return false;
}
// Update the previous size for this file input
file.dataset.previousSize = file_size;
return true;
}
</IF>

View File

@@ -3,7 +3,9 @@
<!-- welcome -->
<div class="jumbotron">
<h5><span class="glyphicon glyphicon-heart" aria-hidden="true"></span> {lang.WELCOME} <IF NAME="user_is">[ {username} ]</IF></h5>
<h5><span class="glyphicon glyphicon-heart" aria-hidden="true"></span> {lang.WELCOME} <IF NAME="user_is">[
{username} ]</IF>
</h5>
<p>{welcome_msg}</p>
</div>
@@ -19,104 +21,254 @@
<li class="list-group-item">
{{message_content}}
</li>
<ELSE>
<!-- error -->
<li class="list-group-item list-group-item-danger">
<strong>{lang.INFORMATION}</strong> : {{message_content}}
</li>
<ELSE>
<!-- error -->
<li class="list-group-item list-group-item-danger">
<strong>{lang.INFORMATION}</strong> : {{message_content}}
</li>
</IF>
</LOOP>
</ul>
</div>
</IF>
<INCLUDE NAME="progress">
<!-- form upload -->
<form id="uploader" action="{action}" method="post" enctype="multipart/form-data">
<!-- form upload -->
<form id="uploader" action="{action}" method="post" enctype="multipart/form-data">
<div class="card text-center">
<div class="card-header">
<ul class="nav nav-tabs card-header-tabs">
<li class="nav-item">
<a class="nav-link active" data-toggle="tab" href="#fileUpload" role="tab">{lang.DOWNLOAD_F}</a>
</li>
</ul>
</div>
<div class="card-body tab-content">
<div class="card text-center">
<div class="card-header">
<ul class="nav nav-tabs card-header-tabs">
<li class="nav-item">
<a class="nav-link active" data-toggle="tab" href="#fileUpload"
role="tab">{lang.DOWNLOAD_F}</a>
</li>
</ul>
</div>
<div class="card-body tab-content">
<IF NAME="config.safe_code">
<!-- verification code -->
<div class="safe_code card">
<div class="card-body">
<h4 class="card-title">{lang.VERTY_CODE}</h4>
<h6 class="card-subtitle mb-2 text-muted">{lang.NOTE_CODE}</h6>
<p class="card-text">
<img style="vertical-align:middle;" id="kleeja_img_captcha" src="{captcha_file_path}" alt="{lang.REFRESH_CAPTCHA}" title="{lang.REFRESH_CAPTCHA}" onclick="javascript:update_kleeja_captcha('{captcha_file_path}', 'kleeja_code_answer');" />
<input type="text" name="kleeja_code_answer" id="kleeja_code_answer" />
</p>
<IF NAME="config.safe_code">
<!-- verification code -->
<div class="safe_code card">
<div class="card-body">
<h4 class="card-title">{lang.VERTY_CODE}</h4>
<h6 class="card-subtitle mb-2 text-muted">{lang.NOTE_CODE}</h6>
<p class="card-text">
<img style="vertical-align:middle;" id="kleeja_img_captcha"
src="{captcha_file_path}" alt="{lang.REFRESH_CAPTCHA}"
title="{lang.REFRESH_CAPTCHA}"
onclick="javascript:update_kleeja_captcha('{captcha_file_path}', 'kleeja_code_answer');" />
<input type="text" name="kleeja_code_answer" id="kleeja_code_answer" />
</p>
</div>
</div>
</IF>
<!-- files upload -->
<div class="tab-pane active" id="fileUpload" role="tabpanel">
<LOOP NAME=FILES_NUM_LOOP>
<div class="input-group mb-2" style="{{show}}" id="file-block-{{i}}"
onclick="document.getElementById('file{{i}}').click();">
<span class="input-group-prepend">
<div class="btn btn-primary file-button-browse">
<img src="{STYLE_PATH}images/folder.png" width="20" height="20">
<span class="image-preview-input-title">{lang.OPEN}</span>
</div>
</span>
<input type="file" name="file_{{i}}_" id="file{{i}}" data-number="{{i}}"
style="display:none">
<input type="text" id="file-text{{i}}" disabled="disabled"
placeholder="{lang.NO_FILE_SELECTED}" class="form-control">
</div>
</LOOP>
<div>
<br>
<div class="agree text-muted"><small>{terms_msg}</small></div>
<input type="submit" id="submitr" name="submitr" value="{lang.DOWNLOAD_F}"
class="btn btn-outline-primary">
</div>
</div>
</div>
</div>
</form>
<!-- box loading -->
<div id="loadbox" class="card">
<div class="card-body">
{lang.WAIT_LOADING}
<br>
<img src="{STYLE_PATH}images/loading.gif" alt="{lang.LOADING}" />
</div>
</div>
<IF NAME="show_online">
<!-- who's onLine -->
<div class="card who-online">
<div class="card-header">
{lang.NUMBER_ONLINE}: <b>{current_online_users}</b>
</div>
<IF NAME="show_names">
<div class="card-body">
<LOOP NAME="show_names">
<span class="badge badge-pill badge-default">{{name}}</span>
</LOOP>
</div>
</IF>
<!-- files upload -->
<div class="tab-pane active" id="fileUpload" role="tabpanel">
<LOOP NAME=FILES_NUM_LOOP>
<div class="input-group mb-2" style="{{show}}" id="file-block-{{i}}" onclick="document.getElementById('file{{i}}').click();">
<span class="input-group-prepend">
<div class="btn btn-primary file-button-browse">
<img src="{STYLE_PATH}images/folder.png" width="20" height="20">
<span class="image-preview-input-title">{lang.OPEN}</span>
</div>
</span>
<input type="file" name="file_{{i}}_" id="file{{i}}" data-number="{{i}}" style="display:none">
<input type="text" id="file-text{{i}}" disabled="disabled" placeholder="{lang.NO_FILE_SELECTED}" class="form-control">
</div>
</LOOP>
<div>
<br>
<div class="agree text-muted"><small>{terms_msg}</small></div>
<input type="submit" id="submitr" name="submitr" value="{lang.DOWNLOAD_F}" class="btn btn-outline-primary">
</div>
</div>
</div>
</div>
</form>
<!-- box loading -->
<div id="loadbox" class="card">
<div class="card-body">
{lang.WAIT_LOADING}
<br>
<img src="{STYLE_PATH}images/loading.gif" alt="{lang.LOADING}" />
</div>
</div>
<IF NAME="show_online">
<!-- who's onLine -->
<div class="card who-online">
<div class="card-header">
{lang.NUMBER_ONLINE}: <b>{current_online_users}</b>
</div>
<IF NAME="show_names">
<div class="card-body">
<LOOP NAME="show_names">
<span class="badge badge-pill badge-default">{{name}}</span>
</LOOP>
</div>
</IF>
</div>
</IF>
</IF>
</div>
<script>
function copyText(e) {
const button = e.target;
const copyText = button.closest('.form-group').querySelector('textarea');
copyText.select();
document.execCommand("copy");
// Store original button text
const originalButtonText = button.textContent;
// Disable button while text is being copied
button.disabled = true;
// Change button text to "Copied!"
button.textContent = "✔️";
// Wait for 3 seconds and then change button text back to original
setTimeout(function() {
button.textContent = originalButtonText;
button.disabled = false;
}, 3000);
}
function convertSize(size) {
if (size > 1024 * 1024 * 1024) {
size = Math.round(size / (1024 * 1024 * 1024) * 10) / 10 + " Gb";
} else if (size > 1024 * 1024) {
size = Math.round(size / (1024 * 1024) * 10) / 10 + '';
if (!size.match(/\./)) size += '.0';
size += ' Mb';
} else if (size > 1024) {
size = Math.round(size / 1024 * 10) / 10 + " Kb";
} else {
size = size + " Bytes";
}
return size;
}
let uploadForm = document.getElementById('uploader');
let uploadProgress = document.getElementById('uploadProgress');
let progressHolder = document.getElementById('progressHolder');
let loadbox = document.getElementById('loadbox');
let fileCount = {config.filesnum};
let uploaded = 0, uploadSpeed = 0, lastUploadTime = 0;
let stats = document.getElementById('uploaderstats');
let speed = document.getElementById('uploaderspeed');
uploadForm.onsubmit = e => {
e.preventDefault();
let haveFiles = false;
for (let f = 0; f < fileCount; f++) {
let i = document.getElementById('file' + (f + 1));
if (i.value !== '')
{
haveFiles = true;
}
}
if (! haveFiles) {
return false;
}
var xhttp = new XMLHttpRequest();
xhttp.onerror = e=> {
uploadProgress.classList.add("bg-danger");
loadbox.innerHTML = "{lang.ERROR_TRY_AGAIN}";
}
xhttp.upload.onprogress = e => {
if (!lastUploadTime) lastUploadTime = Date.now();
let elapsed = Date.now() - lastUploadTime;
const percent = e.lengthComputable ? (e.loaded / e.total) * 100 : 0;
uploadProgress.style.width = percent.toFixed(2) + '%';
uploadProgress.textContent = percent.toFixed(2) + '%';
uploadProgress.setAttribute("aria-valuenow", percent.toFixed(0));
if (elapsed > 1000) {
uploadSpeed = (e.loaded - uploaded);
speed.innerHTML = convertSize(uploadSpeed)+"/s";
uploaded = e.loaded;
lastUploadTime = Date.now();
}
let humanSent = convertSize(e.loaded);
let humanSize = convertSize(e.total);
self.humanSize = humanSize;
let newHTML = humanSent + " / " + humanSize + " (" + percent.toFixed(2) + "%) complete";
stats.innerHTML = newHTML;
};
xhttp.onreadystatechange = function (e) {
if (this.readyState == 4 && this.status == 200) {
speed.style.display = 'none';
try {
var response = JSON.parse(this.response);
} catch (err) {
stats.style.display = 'none';
console.error("Server returned some ugly/empty JSON");
return xhttp.onerror(e);
}
uploadProgress.classList.add("bg-success");
let newHTML = self.humanSize + " complete";
stats.innerHTML = newHTML;
html = "<div class=\"card mb-5\">\n<ul class=\"list-group list-group-flush\">\n";
loadbox.remove();
response.forEach(element => {
typeclass = element.t == 'index_info' ? '' : ' list-group-item-danger';
html += "<li class=\"list-group-item"+typeclass+"\">\n"+element.i+"</li>";
});
html += "</ul>";
speed.insertAdjacentHTML("afterend", html);
// Add buttons after the new textareas
const formGroups = document.querySelectorAll(".form-group");
formGroups.forEach(formGroup => {
const textarea = formGroup.querySelector("textarea");
if (textarea) {
const button = document.createElement("button");
button.innerHTML = "📋";
button.classList.add("btn", "btn-primary", "btn-sm", "mt-2");
button.addEventListener("click", copyText);
textarea.insertAdjacentElement("afterend", button);
}
});
}
else if (this.readyState == 4 && this.status != 200)
{
speed.style.display = stats.style.display = 'none';
console.error("Server returned bad status");
return xhttp.onerror(e);
}
};
let formd = new FormData(uploadForm);
formd.append('submitr', true);
formd.append('ajax', true);
progressHolder.style.display = stats.style.display = speed.style.display = '';
xhttp.open("POST", "{action}", true);
xhttp.send(formd);
return false;
}
</script>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

5
styles/bootstrap/js/popper.min.js vendored Normal file

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,16 @@
function ajaxRemote (method, url, data, successCallback)
{
var xhttp = new XMLHttpRequest();
let sendData = null;
xhttp.onreadystatechange = function () {
if (this.readyState == 4 && this.status == 200) {
successCallback(this);
}
};
xhttp.open(method, url, true);
if (method == 'POST') {
xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
sendData = data;
}
xhttp.send(sendData);
}

View File

@@ -53,8 +53,8 @@
<div class="form-group">
<label for="show_my_filecp">{lang.SHOW_MY_FILECP}</label>
<select class="form-control" id="show_my_filecp" name="show_my_filecp">
<option value="1" <IF NAME="show_my_filecp.show_my_filecp==1">selected="selected"</IF> >{lang.YES}</option>
<option value="0" <IF NAME="show_my_filecp.show_my_filecp==0">selected="selected"</IF> >{lang.NO}</option>
<option value="1" <IF NAME="show_my_filecp==1">selected="selected"</IF> >{lang.YES}</option>
<option value="0" <IF NAME="show_my_filecp==0">selected="selected"</IF> >{lang.NO}</option>
</select>
</div>

View File

@@ -0,0 +1,6 @@
<div class="progress" id="progressHolder" style="display: none;text-align: center;height: 20px;">
<div class="progress-bar" id="uploadProgress" role="progressbar" style="width: 0%;" aria-valuenow="0"
aria-valuemin="0" aria-valuemax="100">0%</div>
</div>
<div id="uploaderstats" style="display: none;text-align: center;">0 Kb / 0 Kb (100%) complete</div>
<div id="uploaderspeed" style="display: none;text-align: center;">0 Kb/s</div>

View File

@@ -1,68 +0,0 @@
<!-- Contact Us template -->
<div id="content" class="border_radius">
<!-- title -->
<h1 class="title">&#9679; {title}</h1>
<!-- @end-title -->
<!-- line top -->
<div class="line"></div>
<!-- @end-line -->
<IF NAME="ERRORS">
<!-- msg, Infos & Alerts & Errors -->
<dl id="system-message">
<dd class="error">
<ul>
<LOOP NAME="ERRORS">
<li>{%value%}</li>
</LOOP>
</ul>
</dd>
</dl>
<!-- @end-msg -->
</IF>
<!-- form Contact Us -->
<form action="{action}" method="post">
<div class="call">
<IF NAME="NOT_USER">
<label>{lang.YOURNAME} :</label>
<input type="text" name="cname" value="{t_cname}" size="30" tabindex="1" />
<label>{lang.EMAIL} :</label>
<input type="text" name="cmail" value="{t_cmail}" size="30" style="direction:ltr" tabindex="2" />
</IF>
<label>{lang.TEXT} :</label>
<textarea name="ctext" class="text_area" rows="6" cols="40" tabindex="3">{t_ctext}</textarea>
</div>
<div class="clr"></div>
<!-- verification code -->
<IF NAME="config.enable_captcha==1">
<div class="safe_code">
<p>{lang.VERTY_CODE}</p>
<div class="clr"></div>
<div>
<img style="vertical-align:middle;" id="kleeja_img_captcha" src="{captcha_file_path}" alt="{lang.REFRESH_CAPTCHA}" title="{lang.REFRESH_CAPTCHA}" onclick="javascript:update_kleeja_captcha('{captcha_file_path}', 'kleeja_code_answer');" />
<input type="text" name="kleeja_code_answer" id="kleeja_code_answer" tabindex="4" />
</div>
<div class="clr"></div>
<p class="explain">{lang.NOTE_CODE}</p>
</div>
</IF>
<!-- @end-verification-code -->
<div class="clr"></div>
{H_FORM_KEYS}
<input type="submit" name="submit" value="{lang.SEND}" tabindex="5" />
</form>
<!-- @end-form -->
<div class="clr"></div>
</div>
<!-- @end-Contact-Us-template -->

View File

@@ -1,330 +0,0 @@
@charset "UTF-8";
/* --------------------------------------------------
Theme Name: default V2
package: Kleeja copyright(c)2007-2012
version: 1.5
URL: http://www.kleeja.com
Author: Tar3Q+KLEEJA TEAM
--------------------------------------------------
$Id: color.css 1667 2010-09-28 12:41:22Z ALTAR3Q $
--------------------------------------------------
1. HTML Tags
2. Misc
3. group Infos & Alerts & Errors
4. Main Structure
5. Template & Header > header.html
6. Template & Index > index_body.html
7. Template & Downlod > download.html
8. Template & stats > stats.html
9. Template & Rules > rules.html
10. Template & Footer > footer.html
11. Template & login > login.html
12. Template & Users Files > fileuser.html
13. Template & Register > register.html
14. Template & Contact Us > call.html
15. Template & Password Recovery > get_pass.html
16. Template & Report a File > report.html
17. Template & Profile > profile.html
18. Template & File Manager users > filecp.html
19. Template & List of allowed file > guide.html
20. Template & Copy the links after upload > up_boxes.html
# --------------------------------------------------
1. HTML Tags
-------------------------------------------------- */
body {color:#474747;}
h1, h2, h3, h4, h5, h6 { color: #333;}
h1 { color:#8EC1DA;}
h6 { color:#8EC1DA;}
strong {color: #62B4E8;}
small {color: #444;; }
hr {border:solid #ddd; }
code, pre { color: #e33100; }
address { color: #333;}
abbr, acronym {color: #222; border-bottom: 1px solid #ddd;}
/* @Lists -------------------- */
dt {color: #333; }
/* @group Forms -------------- */
label {color:#222;}
textarea ,select {border:1px solid #aaa;}
textarea {color:black;}
input[type="text"], input[type="password"]{border: 1px solid #AFAEAA;border-top-color:#AFAEAA;border-right-color: #D5D5C8;border-bottom-color: #D5D5C8;}
input[type="text"]:hover, input[type="password"]:hover, textarea:hover, select:hover{border: 1px solid #888;}
select:focus, textarea:focus, input[type="password"]:focus, input[type="text"]:focus ,
select.remme:hover,select.remme:focus{background-color:#f7f7f7;border: 1px solid #f7f7f7;}
input[type="submit"]:hover {color:#62B4E8;}
/* @Links -------------------- */
a:link, a:visited{color: #474747;}
a:hover, a:active {color:#62B4E8;}
h1 a, h2 a, h3 a {color: #333;}
h3 a:hover { color: #FF5502; }
/* @end */
/* --------------------------------------------------
2. Misc
-------------------------------------------------- */
.dot {background: url("../images/bg_dots.gif") repeat-x;}
.line {background:url("../images/line.png") repeat-x right top;}
.FooterLine{background:white;}
/* debug kleeja */
.debug_kleeja{background-color:white;border:1px #666 solid;}
/* group Pagination */
a.paginate {color:#333;background:url("../images/pagination.png") 0 0 no-repeat; border:none;}
a.paginate > span {background:url("../images/pagination.png") 100% 0 no-repeat; }
a.paginate:hover, a.paginate:focus{ color:white;background-position:0 -90px; }
a.paginate:hover > span, a.paginate:focus > span { background-position:100% -90px; }
a.dots { background:url("../images/pagination.png") 0 0 no-repeat;}
a.dots > span { background-position:100% 0;}
a.dots:hover, a.dots:focus{ color:#333;background-position:0 0; }
a.dots:hover > span, a.dots:focus > span { background-position:100% 0; }
a.current { background:url("../images/pagination.png") 0 -90px no-repeat; color:white;}
a.current > span { background-position:100% -90px;}
a.current:hover, a.current:focus{background-position:0 -90px; }
a.current:hover > span, a.current:focus > span { background-position:100% -90px;}
a.phover { background:url("../images/pagination.png") 0 -150px no-repeat; color:white;}
a.phover > span { background-position:100% -150px;}
a.phover:hover, a.phover:focus {color:white; background-position:0 -90px; }
a.phover:hover > span, a.phover:focus > span { background-position:100% -90px;}
/* verification code */
.safe_code { border:1px solid #BED9ED;background:#F9F9F0 url("../images/saf3_code01.gif") no-repeat 0% 50%;}
.safe_code p {color:#62B4E8;}
p.explain {color:#666;}
/* @end */
/* --------------------------------------------------
3. group Infos & Alerts & Errors
-------------------------------------------------- */
/* box ,System Message */
ul.index_info, ul.index_err {border-top: 1px solid white;border-bottom: 1px solid white;}
/* Infos */
dd.info ul { border-top: 3px solid #62B4E8;border-bottom: 3px solid #62B4E8;background-color: #BED9ED; }
dd.info ul li { color: #333;background: url("../images/info.png") no-repeat right top; }
/* Errors */
dd.error ul {background-color: #E6C0C0;border-top:3px solid #DE7A7B;border-bottom: 3px solid #DE7A7B;}
dd.error ul li{color:#c00;background: url("../images/error.png") no-repeat right top;}
dd.error ul li strong{color:#c00;}
/* Only Index */
ul.index_info {border-top: 3px solid #62B4E8;border-bottom: 3px solid #62B4E8;background:#BED9ED;}
ul.index_info li {background:url("../images/info_f.gif") no-repeat right top;}
ul.index_err {border-top: 3px solid #DE7A7B;border-bottom: 3px solid #DE7A7B;color:#c00;background:#E6C0C0;}
ul.index_err li {background: url("../images/err.gif") no-repeat right top;}
/* @end */
/* --------------------------------------------------
4. Main Structure
-------------------------------------------------- */
body {background: #ececec url("../images/bg_body.png") repeat-x top center;}
#main {background:#ececec url("../images/bg_main_mobile.png") no-repeat top right;}
@media (min-width: 992px) {
#main {background:url("../images/bg_main.png") no-repeat top right;}
}
#content, #content_index {background:#F8F8F8;border:1px solid #C9C9C9;}
#content_index {background-color:transparent;background-image:none;border:none;}
/* @end */
/* --------------------------------------------------
5. Template & Header > header.html
-------------------------------------------------- */
/* @Logo -------------------- */
#header .logo {background:transparent url("../images/logo.png") right center no-repeat;}
/* @Top Navigation -------------------- */
.top_nav {background:url("../images/menu-bg.gif")}
.top_nav .menu li a {color: #444;}
.top_nav .menu li a:hover {color:#8EC1DA;background:url("../images/hover.png") repeat-x top left;}
.top_nav .menu li a.current {color:#4B4F52;background:url("../images/current-bg.gif") top left repeat-x;}
/* @right menu -------------------- */
#sidebar{background:#f7f7f7 url(../images/sidebar.png) 0 bottom no-repeat;}
#sidebar_box{background: #F8F8F8;border: 1px solid #DFDFDF;}
#sidebar_box .menu li a{background:#8EC1DA 35px 0 repeat-x;color:#000;}
#sidebar_box .menu a:hover{background:#4B4F52;color:#fff;}
@media (min-width: 992px) {
.top_nav {background:url("../images/menu-bg.gif") repeat-x top left;}
}
/* @end */
/* --------------------------------------------------
6. Template & Index > index_body.html
-------------------------------------------------- */
.zx a:hover, .zl a:hover {background:#FEEA00;}
.url {color:#62B4E8;}
.inum {color:#888;}
input.input_num {background:white;border: 1px solid #B3B9C4;outline:1px solid #ccc;}
.waitloading{color:#8EC1DA;}
/* ONLINE -------------------- */
.onlineall, .onlinevisitor,
.onlineusers, .name_users {background:#FAFAE7 url("../images/bg_onlineall.gif") repeat-x center left;border:1px solid white;color:#4E4E07;}
.name_users{background:#F9E5E5 url("../images/bg_onlinevisitor.gif") repeat-x center left;color:#D20C0C;}
/* @end */
/* --------------------------------------------------
7. Template & Downlod > download.html
-------------------------------------------------- */
.data_file .tit {background:#8C8C8C url("../images/bg_tile.gif") repeat-x bottom;border:1px solid #727272;color:white;}
.data_file .data_menu tr{background:white;border-top:1px solid #C7C7C7;border-bottom:1px solid #bbb;}
.data_file .data_menu td{border:none;}
.data_file .data_menu .td {background:#BED9ED url("../images/headline_bg.png") repeat-x top right;color:#333;}
.data_file .filereport {background:url("../images/bg_onlinevisitor.gif") repeat-x bottom left;border-top:1px solid #D88181;border-bottom:1px solid #D88181;color:#D80000;}
.data_file .filereport:hover {background:#F9B6C1;border-color:#B14F4F;}
.data_file_down .wait {color:#4B4F52;}
.download a{background:#8EC1DA url("../images/bg_animated.gif") repeat;border:1px solid #fff;color:#4B4F52;}
.download a:hover {border-color:white;color:#222;}
.download span{color:#777;}
/* @end */
/* --------------------------------------------------
8. Template & Stats > stats.html
-------------------------------------------------- */
.stats {color:#333;background: url("../images/stats.gif") no-repeat 2% 40%;}
.stats ul li {background:transparent url("../images/list_stat.gif") no-repeat right center;}
.st i{background:white;color: #62B4E8;border-top:1px solid #BED9ED;border-bottom:1px solid #BED9ED;}
/* @end */
/* --------------------------------------------------
10. Template & Rules > rules.html
-------------------------------------------------- */
#rules {color:#555;}
#rules .rut {color:red;}
/* @end */
/* --------------------------------------------------
10. Template & Footer > footer.html
-------------------------------------------------- */
#footer{background:#EBEBEB url("../images/bg_footer.gif") repeat;border-top:1px solid #D8D8D8;}
#footer .footer_inner{color:#474747;}
#footer .admin_cp_link span{background:url("../images/admin_cp.gif") no-repeat center left;border:1px solid white;color:#4B4F52;}
#footer .admin_cp_link span:hover {color:#111;}
#footer .footer_stats, #footer .footer_stats strong {color:#777;}
#footer a:link, #footer a:active, #footer a:visited{color:#474747;}
#footer a:hover{color:#8EC1DA;}
/* @end */
/* --------------------------------------------------
11. Template & login > login.html
-------------------------------------------------- */
.login {background:transparent url("../images/login.gif") no-repeat 0% 50%;}
.title_login {background:#fff url("../images/title_login.gif") no-repeat 99% 50%;color:#8EC1DA;}
input.username{background:white url("../images/username.gif") no-repeat 2px 2px;}
input.password{background:white url("../images/password.gif") no-repeat 2px 2px;}
.forget_pass {background:white url("../images/forget_pass.png") no-repeat 96% 50%;}
.forget_pass a{color:#444;}
.forget_pass a:hover {color:#8EC1DA;}
/* @end */
/* --------------------------------------------------
12. Template & Users Files > fileuser.html
-------------------------------------------------- */
#boxfileuser .box_user, #boxfileuser .us3r_n4me {background:white url("../images/bg_box_1.gif") repeat-x top left;border:1px solid white;}
#boxfileuser .public {background:#8C8C8C url("../images/bg_tile.gif") repeat-x bottom;color:white;border-top:1px dashed #EEE;border-bottom:1px dashed #EEE;}
#boxfileuser .uname, #boxfileuser .nums{color:#62B4E8;}
#filecplink fieldset{border: 1px solid #aaa;}
#filecplink input.link_user {color:#8EC1DA;}
#filecplink legend.copylink {color:black;}
.xthumbs {background:#E6E6E6 url("../images/bg_user_box.gif") repeat-x top left;}
/* @end */
/* --------------------------------------------------
13. Template & Register > register.html
-------------------------------------------------- */
.register {background:transparent url("../images/register.gif") no-repeat 0% 50%;}
/* @end */
/* --------------------------------------------------
14. Template & Contact Us > call.html
-------------------------------------------------- */
.call{background:transparent url("../images/call.gif") no-repeat 0% 50%;}
/* @end */
/* --------------------------------------------------
15. Template & Password Recovery > get_pass.html
-------------------------------------------------- */
.get_password{background:transparent url("../images/get_password.gif") no-repeat 4% 50%;}
.get_password p{background:white;border:1px solid #ECCEBB;color:#D80000;}
/* @end */
/* --------------------------------------------------
16. Template & Report a File > report.html
-------------------------------------------------- */
.rebort{background:transparent url("../images/file_rebort.gif") no-repeat 2% 50%;}
input.urlcolor{background:#FFDFDF !important; border:1px solid #D88D8D !important;}
input.urlnoncolor{background:#fff !important; border:1px solid #D88D8D !important;}
input.urlcolor:focus,input.urlcolor:hover,input.urlnoncolor:hover{background:#FFDFDF !important;border-color:#D88D8D !important;}
/* @end */
/* --------------------------------------------------
17. Template & Profile > profile.html
-------------------------------------------------- */
#profile select, #profile option{background:#BED9ED;color:black;}
#profile .boxdata{border:1px solid white;background:white url("../images/bg_tabbertab.png") repeat-x bottom left;}
#profile .boxdata .tit{background:#8EC1DA url("../images/bg_tile_tab.png") repeat-x bottom left;color:white;}
#profile .boxdata .boxdata_inner input, #profile .boxdata .boxdata_inner select {color:#4B4F52;}
/* @end */
/* --------------------------------------------------
18. Template & File Manager users > filecp.html
-------------------------------------------------- */
.file_cp {background:#ECECEC url("../images/table_file_cp.gif") no-repeat 40% 45%;color:#444;border:1px solid white;}
.file_cp .nbr {color:black;}
.file_cp thead th, .file_cp tfoot th, .file_cp tbody td {border: 1px solid #aaa;border-top-color: white;border-left-color: white;border-bottom-color: #aaa;}
.file_cp thead th{background:#8EC1DA url("../images/bg_tile_tab.png") repeat-x top left;color:white;border:none;}
.file_cp thead th a:link{color:white;}
.file_cp tfoot th{background:#ECECEC url("../images/bg_footer.gif") repeat-x center right;}
.file_cp tbody tr:hover td{border-top-color:#aaa;border-bottom-color:white;}
.file_cp tbody tr:hover td a{color:black;}
.file_cp a:link {color:#444;}
.file_cp a:visited {color:black;}
.file_cp a:hover {color:#D2691E;}
.checkall a:link{color:#62B4E8;}
.ored,.ored:hover,.ored a:link, .ored a:hover, .ored a:visited {background:#FFE1E2;color:red !important;}
.ored td,.ored:hover td{border-top-color:#aaa !important;border-bottom-color:white !important;}
/* @end */
/* --------------------------------------------------
19. Template & List of allowed file upload > guide.html
-------------------------------------------------- */
.guide_right_th, .guide_left_th{color:white;border: 1px solid #62B4E8;}
.guide_right_th {background:#767676 url("../images/bg_tile.gif") repeat-x bottom right;border-color:#727272;}
.guide_left_th {background:#62B4E8 url("../images/bg_tile_tab.png") repeat-x bottom left;}
.guide_right_box{background:white url("../images/bg_box_1.gif") repeat-x top left;border-right:1px solid white;border-left:1px solid white;}
.guide_right_img,.guide_right_n4me, .guide_left_img {color:#333;}
.guide_right_img {background-color:white;border:1px solid #DBDBDB;}
.guide_right_ext{background:#F9F9F9 url("../images/headline_bg.png") repeat-x top right;border-bottom: 1px solid #EFEFEF;border-top: 1px solid #DBDBDB;}
.guide_right_ext_color{color:#222;}
.guide_right_ext_lang{color:black;}
.guide_left_box{background:white url("../images/bg_box.gif") repeat-x top left;border-right:1px solid white;border-left:1px solid white;}
.guide_left_img {background-color:white;border: 1px solid #62B4E8;}
.guide_left_n4me{color:#F45E13;}
.guide_left_ext{background:#DFEDF8 url("../images/headline_bg.png") repeat-x top right;border-bottom: 1px solid #62B4E8;border-top: 1px solid #62B4E8;}
.guide_left_ext_color{color:#333;}
.guide_left_ext_lang{color:black;}
.guide_right_ext:hover{background-color:white;}
/* @end */
/* --------------------------------------------------
20. Template & Copy the links after upload > up_boxes.html
-------------------------------------------------- */
.thumb_img a img{background:white;border:2px solid #62B4E8;}
.thumb_img a img:hover{border-color:#FEA53D;}
.up_box_input {border: 1px solid white;background:#ECECEC;}
td.btitle ,td.all_box_link{border:1px solid #62B4E8;}
td.btitle {color:#333;border-left:none;}
td.all_box_link {border-right:none;}
textarea.up_input {color:#54270A;}
/* @end */

View File

@@ -1 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=windows-1256" /><title>Powered by Kleeja</title><style type="text/css">* {font-size: 100%;margin:0;padding: 0; color:#CECFCE;}body { font-family: Tahoma ,Arial, sans-serif;font-size: 100%;color: #69788E; margin: 10px 30px;background: #F7F7F7;}a:link, a:visited {text-decoration: none;color:#CECFCE;}a:active, a:hover {text-decoration: underline;color: #111;}h1 {font-family: "Trebuchet MS", Helvetica, sans-serif; font-size: 1.70em;font-weight: normal;color: #333333;margin-top: 0; margin-bottom: 10px;}.content_box {border: 1px dashed #CECFCE;background: #FFFFFF;padding: 10px;margin-right: auto;margin-left: auto;}</style> </head> <body title="&#1603;&#1604;&#1610;&#1580;&#1575;"><br /><div class="content_box"><p><a target="_blank" href="http://www.kleeja.com" title="kleeja"><img border="0" src="http://kleeja.com/index.png"></a></p><br /><h1><span style="font-size:250%;color:#D80000;">403 - Access forbidden!</span></h1></div><br /><div class="content_box"><span style="font-size: 140%">Powered by Kleeja &gt;&gt;&gt; the best uploader ...</span > >> <a target="_blank" href="http://www.kleeja.com/bugs/ar/">Bugs</a> | <a target="_blank" href="http://www.kleeja.com/plugins/">Plugins</a> | <a target="_blank" href="http://www.kleeja.com/styles/">Styles</a> | </div></body></html>

View File

@@ -1,92 +0,0 @@
@charset "UTF-8";
/* --------------------------------------------------
Theme Name: default V1
Filename: styles/default/ltr.css
package: Kleeja copyright(c)2007-2010
version: 1.0.0
URL: http://www.kleeja.com
Date: 2010-07-24
Author: Tar3Q
--------------------------------------------------
$Id: ltr.css 2129 2013-02-14 16:04:19Z developer.mahmoud $
-------------------------------------------------- */
/* @HTML Tags -------------- */
body { font-family: Arial, Helvetica, Helvetica Neue, Verdana, sans-serif; font-size: 13px;}
input, textarea, select, option, input[type="text"], input[type="password"], input[type="file"],input[type="submit"] {font:normal 12px Arial, Verdana, sans-serif, "Lucida Grande", "Lucida Sans Unicode"; }
ol {margin-right:0;margin-left: 25px;}
option {padding-left: 1em;}
caption, th, td {text-align:left;}
/* @Misc -------------- */
.left, img.left {float:right;}
.right, img.right {float:left;}
/* @Pagination -------------- */
.pagination a, .pagination span.current, .pagination span.three_dots {float:left;margin-left:0;margin-right:3px;}
/* @verification code -------------- */
.safe_code {background:#F9F5F0 url(../images/saf3_code_ltr.gif) no-repeat 100% 50%;}
/* @captcha stuff -------------- */
#kleeja_img_captcha {float:left;}
/* @group Infos & Alerts & Errors -------------- */
dd.info ul li, dd.error ul li,ul.index_info li, ul.index_err li { background-position:left top;font-size:120%;}
/* @Main Structure -------------- */
#content {float:right;}
/* @Template & Header > header.html -------------- */
#header .logo {float:left;background-position:left center;margin:0 10px 0 40px;}
.top_nav .menu ul{float:left;}
.top_nav .menu li {float:left;margin-left:0;margin-right:2px;}
.top_nav .menu li a {float:left;}
#sidebar {float:left;padding: 5px 8px 10px 6px;}
#content_index {float: left;}
#content, #content_index {margin: 5px 10px 0 0;}
/* @Template & Index > index_body.html -------------- */
.waitloading{font-size:140%;}
.online{float:left;}
.onlineall, .onlinevisitor, .onlineusers, .name_users {float:left;margin-left:0;margin-right:6px;}
/* @Template & Downlod > download.html -------------- */
.data_file .data_menu td{padding-right:0;padding-left:5px;}
.data_file .data_menu .td {width:125px;}
.data_file_down .wait {font-size:x-large;}
/* @Template & Stats > stats.html -------------- */
.stats {font-size:100%;font-weight:400;background-position: 94% 50%;}
.stats ul li {background-position:left center;padding-right:0;padding-left:10px;}
/* @Template & Rules > rules.html -------------- */
#rules {font-size:100%;font-weight:400;}
#rules .rut {text-indent:0;}
#rules .rls ul li {padding-right:0;padding-left:5px;}
/* @Template & Footer > footer.html -------------- */
#footer .footer_inner{font-size:100%;}
#footer .bu-panel{float:left;}
#footer .admin_cp_link span{font-weight:bold;padding:4px 35px;}
#footer .footer_stats, #footer .googleanalytics{float:right;font-size:100%;}
/* @Template & login > login.html -------------- */
.login {background-position:80% 50%;}
.title_login {background-position:1% 50%;}
input.username, input.password {float:left;padding:3px 20px 3px 6px;background-position: 98% 50%;}
.forget_pass {background-position: 2% 50%;float:right;}
/* @Template & Users Files > fileuser.html ------- */
#boxfileuser .box_user {float:right;}
#boxfileuser .us3r_n4me {float:left;}
#boxfileuser .box_user {float:left;}
#boxfileuser .us3r_n4me {float:right;}
/* @Template & Register > register.html ------ */
.register {background-position:85% 50%;}
/* @Template & Contact Us > call.html -------------- */
.call {background-position:100% 50%;}
/* @Template & Password Recovery > get_pass.html ------- */
.get_password{background-position:60% 50%;}
/* @Template & Report a File > report.html ----- */
.rebort{background-position:94% 50%;}
/* @Template & Profile > profile.html ---------- */
#profile .boxdata{float:right;}
#profile .boxdata .boxdata_inner label {text-align:left;font-size:90%;}
#profile .boxdata .boxdata_inner select {float:left;margin-right:0;margin-left:10px;}
/* @Template & File Manager users > filecp.html ------- */
.file_cp {background-position:60% 50%;}
.left_button {float:right;}
.file_cp .odd, .file_cp .nbr {text-align:left;}
/* @Template & List of allowed file upload > guide.html -------------- */
.guide_right_img img, .guide_left_img img{padding-left:0;padding-right:5px;}
/* @Template & Copy the links after upload > up_boxes.html --------- */
td.btitle {width:120px;border-left:1px solid #C8BD7C;border-right:none;}
td.all_box_link {border-right:1px solid #C8BD7C;border-left:none;}
/* @end */

View File

@@ -1,461 +0,0 @@
@charset "UTF-8";
/** @package Name: Kleeja Copyright (c) 2007-2012 (http://kleeja.com)
@version: 1.5 Theme: default V2
@Author: Tar3Q (http://Tar3Q.com), KLEEJA TEAM
******************************************************
$Id: stylesheet.css 2133 2013-04-04 04:28:02Z saanina $
******************************************************/
/** @CSS Reset was written by Dejan Cancarevic & (http://stylizedweb.com/2008/02/14/10-best-css-hacks) **/
html, body, div, span, applet, object, iframe,h1, h2, h3, h4, h5, h6, p, blockquote, pre,a, abbr, acronym, address, big, cite, code,del, dfn, em, font, img, ins, kbd, q, s, samp,small, strike, strong, sub, sup, tt, var,dl, dt, dd, ol, ul, li,fieldset, form, label, legend,table, caption, tbody, tfoot, thead, tr, th, td {margin: 0;padding: 0;border: 0;outline: 0;font-weight: inherit;font-style: inherit;font-size: 100%;font-family: inherit;vertical-align: baseline;}:focus {outline: 0;}body {line-height: 1;color: black;background: white;}ol, ul {list-style: none;}table {border-collapse: separate;border-spacing: 0;}caption, th, td {text-align: right;font-weight: normal;}blockquote:before, blockquote:after,q:before, q:after {content: "";}blockquote, q {quotes: "" "";}
/** @Print Styles **/
@media print{body {background-color:white !important;color: black !important; }a, a:link, a:visited { color: black !important; text-decoration:none !important;} #footer, .extras_header, .extras_footer{display: none;}}
/** --------------------------------------------------
1. HTML Tags
2. Misc
3. Message Infos, Alerts, Errors
4. Main Structure
5. Template & Header > header.html
6. Template & Index > index_body.html
7. Template & Downlod > download.html
8. Template & stats > stats.html
9. Template & Rules > rules.html
10. Template & Footer > footer.html
11. Template & login > login.html
12. Template & Users Files > fileuser.html
13. Template & Register > register.html
14. Template & Contact Us > call.html
15. Template & Pass~ Recovery > get_pass.html
16. Template & Report a File > report.html
17. Template & Profile > profile.html
18. Template & File Manager > filecp.html
19. Template & List allowed file > guide.html
20. Template & Links after upload > up_boxes.html
/* --------------------------------------------------
1. HTML Tags
-------------------------------------------------- */
html, body {margin: 0; padding: 0;}
body {text-align:justify;font-family: Tahoma, Arial, Verdana, sans-serif, "Lucida Grande", "Lucida Sans Unicode"; font-size: 12px;}
h1, h2, h3, h4, h5, h6 {font-weight: bold; margin: 5px 0;}
h1, h2, h3, h4 { line-height: 1;}
h5, h6 { line-height: 18px;}
h1 { font-size: 32px;}
h2 { font-size: 24px;}
h3 { font-size: 20px;}
h4 { font-size: 18px;}
h5 { font-size: 14px;}
h6 { font-size: 12px;}
p { line-height: 18px; margin: 0 0 10px; }
strong {font-weight: bold;}
small {font-size: 90%; line-height: inherit;font-weight: normal; }
em {font-style:italic;}
p img {margin: 0;}
img {border: none;}
hr { border-width:1px 0 0;clear:both;margin:14px 0 15px;height: 0;}
code, pre { font: 12px/18px "Monaco", "Courier New", "Courier", monospace; }
address { line-height: 18px; margin: 0 0 10px; }
abbr, acronym { text-transform: uppercase; font-size: 90%; cursor: help; }
abbr { text-transform: none; }
/* @Lists ******/
ul, ol , dd{ margin: 5px 0; }
ul { list-style: none inside; }
ol { list-style: decimal; margin-right: 25px; }
dt, dd { line-height: 18px; }
dt { font-weight: bold;}
/* @Forms ******/
form {margin-bottom:10px; }
fieldset { }
label {display: block;line-height: 18px; padding:4px 0;}
input, textarea, select, option, input[type="text"], input[type="password"], input[type="file"],input[type="submit"] {font:normal 12px Tahoma, Arial, Verdana, sans-serif, "Lucida Grande", "Lucida Sans Unicode"; }
select, option{cursor: pointer;vertical-align: middle; width:auto;padding:1px 5px;}
textarea {cursor:text;vertical-align: middle;padding:2px;}
input {padding:3px 6px;margin:0 2px;}
input[type="text"], input[type="password"]{padding:2px;cursor: text;}
input[type="submit"]{ cursor: pointer;padding:2px 15px;}
select:focus, textarea:focus {outline: none;}
/* @Links ******/
a:link, a:visited{text-decoration: none;outline: 0; line-height: inherit;}
a:hover, a:active {text-decoration:none;}
p a {line-height: inherit;}
h1 a, h2 a, h3 a {font-weight: bold; }
h4 a, h5 a { line-height: inherit; font-weight: bold; }
h4 a:hover, h5 a:hover { text-decoration: underline; }
/*** @end ***/
/**
2. Misc
-------------------------------------------------- */
/* Clear the columns automagically, thanks @kneath */
.clearfix:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; }
.clearfix {display:inline-block;}
.clearfix {display: block;} /* Hide from IE Mac */
.left, img.left {float:left;}
.right, img.right {float:right;}
.clr,.line {clear:both;overflow:hidden;height:0;}
.dot {padding:5px 0;}
.line {height:6px; margin:1px;}
.FooterLine{width:100%;height:1px;}
/* debug kleeja */
.debug_kleeja{width:80%;margin:0 auto;margin:20px 0;}
.debug_kleeja fieldset{margin:0 auto;width:80%;}
/* group Pagination */
#pagination { text-align:right; margin:0 0 10px 0; float:right; }
#pagination .page-item{display: inline-block;}
a.paginate { display:inline-block;height:23px; padding:0 1px; font-size:80%; font-weight:bold; white-space:nowrap; overflow:visible; cursor:pointer; text-decoration:none; }
a.paginate > span {display:block; height:23px; padding:0 10px 0 8px; line-height:23px;}
a.paginate:hover, a.paginate:focus{text-decoration:none;}
a.current > span {cursor:default;}
a.phover:hover, a.phover:focus {text-decoration:none;}
/* titles all */
h1.title {width:100%;padding:5px 0;font-size:140%;}
/* verification code */
.safe_code { margin:10px 0;padding: 10px;}
.safe_code p {line-height:10px;font-size:90%;font-weight:700;}
.safe_code input[type="text"]{padding:4px;text-transform:lowercase;direction:ltr;}
p.explain {font-size:x-small;font-weight: normal;text-indent:4px;padding-top:5px;}
/* extras header and extras footer */
.extras_header, .extras_footer { clear:both; width:100%;overflow:hidden; margin:5px auto;padding:10px;text-align:center;}
/* captcha stuff */
#kleeja_img_captcha {cursor:pointer;float:right;}
/* @end */
/* --------------------------------------------------
3. group Infos & Alerts & Errors
-------------------------------------------------- */
/* box ,System Message */
#system-message {margin:5px 0;}
#system-message dd {text-indent: 30px;}
dd.info ul, dd.error ul, ul.index_info, ul.index_err{list-style:square;list-style-position:inside;padding:12px;line-height:30px;font-weight: bold;}
ul.index_info, ul.index_err {margin:4px auto;text-indent:30px;}
dd.info ul li, dd.error ul li{ padding:0 5px;}
/* @end */
/* --------------------------------------------------
4. Main Structure
-------------------------------------------------- */
body {width:100%;height:100%;}
#main {width:100%;margin:10px auto;}
#wrapper {height:100%;padding:0px 15px 10px 15px;}
#content, #content_index {width:100%;float:left;}
#content_index {min-height:220px;float:right;}
@media (min-width: 992px) {
#main {width:960px;margin:10px auto;}
#content, #content_index{width:70%; padding:10px 15px; margin:5px 0 0 10px;}
}
/* @end */
/* --------------------------------------------------
5. Template & Header > header.html
-------------------------------------------------- */
#header {width:100%;padding:10px 0;}
/* @Logo -------------------- */
#header .logo {float:right;display:inline;text-indent:-99999px;overflow: hidden;margin:0 40px 0 10px;width:300px;height:100px;}
/* @Top Navigation -------------------- */
.top_nav {height: 88px;margin:0 10px;display: block;}
/*.top_nav .menu {margin:0 40px;}*/
.top_nav .menu ul{list-style-type: none;float:right;}
.top_nav .menu li {display: block;float:right;margin-left:2px;}
.top_nav .menu li a {height:40px;line-height:40px;display: block;float: left;padding:0 20px;font-size:90%;font-weight:700;}
.top_nav .menu li a.current {padding:0px 20px;}
/* @right menu -------------------- */
#sidebar{width:100%;float:right;margin:0px;padding:5px 6px 10px 8px;-moz-border-radius: 4px; -khtml-border-radius: 0px 0px 8px 8px; -webkit-border-radius: 0px 0px 8px 8px; border-radius: 0px 0px 8px 8px;}
#sidebar_box{text-align: center;width:100%;margin-bottom:10px;padding-top: 5px; -moz-border-radius: 4px; -khtml-border-radius: 4px; -webkit-border-radius: 4px; border-radius: 4px;position:relative;}
#sidebar_box > img { display: none;}
@media (min-width: 992px) {
#sidebar_box > img { display: inline-block;}
#sidebar, #sidebar_box{width:210px;}
.top_nav {height:40px;}
}
#sidebar_box .menu li{margin:2px 4px;}
#sidebar_box .menu li a{display:block;padding:8px 6px;border:0;border-radius:5px;-moz-border-radius:5px;-webkit-border-radius:5px;text-align:center;}
/* @end */
/* --------------------------------------------------
6. Template & Index > index_body.html
-------------------------------------------------- */
.wolcome_msg {text-indent:5px;font-size:12px;padding:3px 6px;}
.agree{margin-top:20px;padding:3px 0;}
.edit_avater_u{margin-top:5px;padding:3px 0;}
.agree span{font-size:90%;font-weight:700;}
.zx, .zl {cursor:pointer;padding:4px;}
.bn_up {margin-top:7px;}
.url {margin-top:3px;direction:ltr;}
.inum {text-align:center;}
input.input_num {font-weight:400;font-size:10px;padding:2px 1px;}
input.file, input.url{display:block;}
#loadbox {padding: 15px; display:none;}
.waitloading{font-size:120%;margin:5px;}
#progress_bar {
margin: 0 auto;
width: 400px;
height: 22px;
border: 1px solid #111;
background-color: #292929;
}
#progress_bar div {
height: 100%;
color: #fff;
text-align: right;
line-height: 22px; /* same as #progress_bar height if we want text middle aligned */
width: 0;
background-color: #0099ff;
}
/* ONLINE -------------------- */
.online{width:100%;float:right;padding:2px 0;display:block;}
.onlineall, .onlinevisitor, .onlineusers, .name_users {float:right;line-height:16px;margin: 0 0 8px 5px;padding:2px 10px;font-weight:400;}
/* New Tabs -------------------- */
.tabnav{height:22px;padding:0px;margin:0px;border-bottom:1px solid #cccccc;}
.tabnav li{width:auto;height:12px;display:block;font-size:11px;float:right;background:#bed9ed;border: 1px solid #cccccc;border-bottom-style:none;padding: 5px 12px 5px 12px;margin-left: 4px;cursor:pointer;}
.tabnav li:hover{background-color:#deebf1;}
li.tabactive{color:#8EC1DA;background-color:white;}
li.tabactive:hover{background-color:white;}
.tabmain{width:100%;margin-top:10px;}
.tabcon{border:1px solid #cccccc;border-top-style:none;background:white url("../images/bg_tabbertab.png") repeat-x bottom left;padding:20px 20px 20px 20px;display:none;}
.tabcon .go_up{background:url("../images/go_up.png") no-repeat 0% 100%;text-align:right;margin-top:14px;}
.tabcon:nth-child(2){display:block;}
@media (min-width: 992px) {
.tabmain{width:650px;}
}
/* @end */
/* --------------------------------------------------
7. Template & Downlod > download.html
-------------------------------------------------- */
.file_info_box {margin:5px auto;padding:10px 0;}
.data_file,.data_file_down {width:56%;}
.data_file .tit {font-weight:700;text-align:center;padding:8px 0;margin:1px 0;}
.data_file .data_menu {width:100%;font-size:12px;table-layout:fixed;}
.data_file .data_menu tr{display:block;margin-bottom:1px;}
.data_file .data_menu td{ white-space:nowrap;padding-right:5px;height:24px;line-height:24px;}
.data_file .data_menu .td {width:82px;text-align:center;}
.data_file .filereport {height:24px;line-height:24px;text-align:center;cursor:pointer;margin-top:1px;font-weight:700;}
.data_file_down {width:40%;text-align:center;font-weight:700;}
.data_file_down p.find_x {margin:2px 0;font-size:small;}
.data_file_down .wait {font-size:xx-large;height:45px;line-height:45px;}
.download {margin:5px auto;}
.download a{cursor:pointer;height:34px;line-height:34px;padding:10px 15px;}
.download span{font-size:x-small;}
/* @end */
/* --------------------------------------------------
8. Template & Stats > stats.html
-------------------------------------------------- */
.stats {font-size:90%;font-weight:700;margin:5px 0;}
.stats ul {list-style-type:none;text-indent:4px;}
.stats ul li {height:30px;line-height:30px;padding-right:15px;}
.st i{padding:5px 20px;}
/* @end */
/* --------------------------------------------------
10. Template & Rules > rules.html
-------------------------------------------------- */
#rules {padding:10px 0;font-size:90%;font-weight:700;}
#rules .rut {clear:both;margin-bottom:3px;padding:4px 0px;text-indent:10px;}
#rules .rls {display:block;text-indent:10px;}
#rules .rls ul{list-style-type:disc;text-indent:4px;}
#rules .rls ul li {line-height:20px;padding:1px 5px 2px 0;}
/* @end */
/* --------------------------------------------------
10. Template & Footer > footer.html
-------------------------------------------------- */
#footer{width:100%;padding:10px 0;}
#footer .footer_inner{width:100%;margin:0 auto;font-size:96%;}
#footer .Copyrights{text-align: center; width: 100%; padding: 10px}
#footer .bu-panel{line-height:22px;margin:10px 0 !important;float:right;}
#footer .admin_cp_link span{padding:6px 35px;font-weight:bold;}
#footer .admin_cp_link span:hover {cursor:pointer;text-decoration:none;}
#footer .footer_stats, #footer .googleanalytics{display:block;margin-top:25px !important;direction:ltr;}
#footer .footer_stats, #footer .footer_stats strong {font-size:90%;font-family:Baskerville,"Palatino","Book Antiqua",tahoma;}
#footer a:hover{text-decoration:underline;}
@media (min-width: 992px) {
#footer .footer_inner{width:930px;}
#footer .Copyrights{margin-bottom:15px !important;line-height:22px;}
}
/* @end */
/* --------------------------------------------------
11. Template & login > login.html
-------------------------------------------------- */
.login {margin:5px 0;padding:15px;}
.title_login {width:100%;text-indent:45px;height:32px;line-height:32px;font-size:18px;font-weight: 400;}
.box_form_login {width:50%;padding:5px 0;}
input.username, input.password {padding:3px 6px 3px 20px;}
select.remme {padding:1px 4px;margin:0 2px;}
.forget_pass {text-indent:10px;padding:4px 15px;margin-top:4px;float:left;font-size:12px;}
.forget_pass a:hover {text-decoration: underline;}
/* @end */
/* --------------------------------------------------
12. Template & Users Files > fileuser.html
-------------------------------------------------- */
#boxfileuser ,#filecplink {display:block;margin:8px auto;font-weight: 700;}
#boxfileuser .box_user, #boxfileuser .us3r_n4me {display:inline;height:60px;}
#boxfileuser .box_user {width:46%;float:right;}
#boxfileuser .us3r_n4me {width:45%;float:left;}
#boxfileuser .public {margin:5px auto;font-size:90%;padding:5px 10px;text-align:center;}
#boxfileuser .uname, #boxfileuser .nums{font-size:160%;padding-top:4px;text-align:center;}
#filecplink fieldset{padding: 15px;margin:8px auto;}
#filecplink input.link_user {direction:ltr;width:98%;margin:0 auto;padding:6px;font-size:90%;font-weight: 700;letter-spacing:1px;}
#filecplink legend.copylink {font-size:90%;font-weight: 400;padding:0 5px;}
.fileuser_files{padding:10px}
.fileuser-thumbs {width:100%;}
.fileuser-thumbs ul{list-style-type: none;}
.fileuser-thumbs li{
display: inline;
list-style: none;
width: 150px;
height: 150px;
float: left;
margin: 0 5px 20px 0;
text-align: center;
}
.fileuser-thumbs li.is_image{
background:#CCCCCC url(../images/img_container.png) no-repeat 50% 50%;
}
.fileus-thumbs .kcheck{
}
.fileuser-thumbs img{
height: 150px !important;
width: 150px !important;
}
.fileuser-thumbs .filebox{
background-repeat:no-repeat;
background-position:50% 15%;
border:1px solid #ccc;
background-color:#EFEFFF;
width:150px;
height:150px;
}
.filebox .this_file{
padding-top:50px;
}
.filebox .this_file_select{
padding-top:20px;
}
.filebox .fileinfo{
padding-top:10px;
text-align:right;
padding-right:10px;
}
.fileuser-thumbs .fileinfo span{
font-size:10px;
padding:2px;
display:block;
}
/* @end */
/* --------------------------------------------------
13. Template & Register > register.html
-------------------------------------------------- */
.register {margin:5px 0;padding: 10px 0;}
/* @end */
/* --------------------------------------------------
14. Template & Contact Us > call.html
-------------------------------------------------- */
.call{margin:5px 0;padding: 8px 0;}
textarea.text_area{width:70%;}
/* @end */
/* --------------------------------------------------
15. Template & Password Recovery > get_pass.html
-------------------------------------------------- */
.get_password{margin:5px 0;padding: 10px 0;}
.get_password p{width:65%;padding:3px 6px;text-align:center;}
/* @end */
/* --------------------------------------------------
16. Template & Report a File > report.html
-------------------------------------------------- */
.rebort{margin:5px 0;padding: 5px 0;}
input.urlcolor,input.urlnoncolor{letter-spacing:1px;width:70%;}
input.urlcolor:focus,input.urlcolor:hover{cursor:default;}
/* @end */
/* --------------------------------------------------
17. Template & Profile > profile.html
-------------------------------------------------- */
#profile .boxdata{float:right;text-align:center;width:100%;height:200px;margin:5px;}
#profile .boxdata .tit{padding:6px;margin:0;font-size:90%;}
#profile .boxdata .boxdata_inner {padding:8px 14px;text-align:center;}
#profile .boxdata .boxdata_inner label {padding:3px 10px;text-align:right;}
#profile .boxdata .boxdata_inner input, #profile .boxdata .boxdata_inner select {font-size:90%;font-weight:700;;padding:2px 4px;}
#profile .boxdata .boxdata_inner select {float:right;margin-right:10px;width:88%;padding:0px 4px;}
.buttons_center {line-height:24px;padding:5px;text-align:center;margin:3px auto;}
/* @end */
/* --------------------------------------------------
18. Template & File Manager users > filecp.html
-------------------------------------------------- */
.file_cp {width:100%;font-size:90%;}
.file_cp td {height: 30px;line-height: 30px;padding:0px 8px;white-space: nowrap;}
.file_cp th {padding:8px;white-space:nowrap;}
.left_button {float:left;margin:2px 0;}
.file_cp .odd {text-align:right;width:76%;}
.file_cp .nbr {text-align:right;}
.file_cp thead th, .file_cp tfoot th, .file_cp tbody td {font-weight:bold;text-align:center;}
.ored,.ored:hover,.ored a:link, .ored a:hover, .ored a:visited {text-decoration:line-through;}
/* @end */
/* --------------------------------------------------
19. Template & List of allowed file upload > guide.html
-------------------------------------------------- */
#guide {width:100%;margin:5px auto 15px;}
.guide_right_th, .guide_left_th{padding:8px 15px;font-weight:700;font-size:12px;text-align:center;}
.guide_right_box{padding:10px;margin:1px 0px;}
.guide_right_img,.guide_right_n4me, .guide_left_img {display:block;font-size:12px;font-weight:700;padding:5px 8px;}
.guide_right_n4me{display:inline;}
.guide_right_img img{padding-left:5px;}
.guide_right_ext{line-height:18px;padding:4px 8px;margin:2px 0; text-align:center}
.guide_left_ext{line-height:18px;padding:4px 8px;margin:2px 0;text-align:center}
.guide_right_ext_color{font-size:12px;margin:0 2px; }
.guide_right_ext_lang{font-weight:400;font-size:12px;margin:0 2px;}
.guide_right_ext_lang{font-weight:400;font-size:12px;margin:0 2px;}
.guide_left_img img{padding-left:5px;}
/* @end */
/* --------------------------------------------------
20. Template & Copy the links after upload > up_boxes.html
-------------------------------------------------- */
.thumb_img {width:100%;margin:5px auto;text-align:center;}
.thumb_img a img{padding:10px;}
.up_box_input {margin:1px auto;padding:0 ;}
.up_box_input tr{height:30px;line-height:30px;padding:0 !important;}
.up_box_input td{padding:5px !important;}
td.btitle ,td.all_box_link{text-align:center;font-size:11px;font-weight:700;padding:0 4px;}
td.btitle {width:160px;text-align:left;white-space:nowrap}
td.all_box_link {padding:0 !important;text-align:right;}
textarea.up_input {direction:ltr;width:400px;padding:3px;letter-spacing:1px;vertical-align:middle;margin:5px;}
/* @end */

View File

@@ -1,91 +0,0 @@
<!-- Downlod template -->
<div id="content" class="border_radius">
<!-- title -->
<h1 class="title">&#9679; {title}</h1>
<!-- @end-title -->
<!-- line top -->
<div class="line"></div>
<!-- @end-line -->
<!-- box Downlod -->
<div class="file_info_box">
<table style="width:100%;">
<tr>
<!-- Information File -->
<td class="data_file">
<div class="tit">{lang.FILE_INFO}</div>
<table class="data_menu" cellspacing="1" cellpadding="1">
<tr>
<td class="td">{lang.FILENAME}</td>
<td style="white-space:normal!important;">{name}</td>
</tr>
<tr>
<td class="td">{lang.FILETYPE}</td>
<td class="tddata">{type}</td>
</tr>
<tr>
<td class="td">{lang.FILESIZE}</td>
<td class="tddata">{size}</td>
</tr>
<tr>
<td class="td">{lang.FILEDATE}</td>
<td class="tddata">{time}</td>
</tr>
<tr>
<td class="td">{lang.FILEUPS}</td>
<td class="tddata">{uploads}</td>
</tr>
<IF NAME="fusername">
<tr>
<td class="td">{lang.USERNAME}</td>
<td class="tddata"><a href="{userfolder}">{fusername}</a></td>
</tr>
</IF>
</table>
<div class="filereport" onclick="window.location.href='{REPORT}';"><img src="{STYLE_PATH}images/zl.png" alt="file Report" class="pngfix" style="vertical-align:middle;" />&nbsp;&nbsp; {lang.FILEREPORT}</div>
</td>
<!-- @end-Information-File -->
<td style="width:1%;"></td>
<!-- box File -->
<td class="data_file_down">
<p class="find_x">{lang.FILE_FOUNDED}</p>
<div class="clr"></div><br />
<img src="{STYLE_PATH}images/download.png" class="pngfix" alt="" />
<div class="clr"></div><br />
<div id="url"><p style="color:red">{lang.JS_MUST_ON}</p></div>
<div class="clr"></div>
</td>
<!-- @end-box-File -->
</tr>
</table>
</div>
<!-- @end-box-Downlod -->
<script type="text/javascript">
<!--
var timer = {seconds_w};
ti();
function ti()
{
if(timer > 0)
{
document.getElementById("url").innerHTML = '<div class="wait">{lang.WAIT} ' + timer + ' <\/div>';
timer = timer - 1;
setTimeout("ti()", 1000)
}
else
{
document.getElementById("url").innerHTML = '<p class="download"><a href="{url_file}" target="_blank">{lang.CLICK_DOWN}<\/a><br /><span>{size}<\/span><\/p>';
}
}
//-->
</script>
</div>
<!-- @end-Downlod-template -->

View File

@@ -1,15 +0,0 @@
<!-- Errors template -->
<div id="content_index">
<div class="clr"></div>
<!-- msg, Alerts & Errors -->
<dl id="system-message">
<dd class="error">
<ul>
<li>{text} <a href="javascript:history.go(-1)">{go_back_browser}</a></li>
</ul>
</dd>
</dl>
<!-- @end-msg -->
<div class="clr"></div>
</div>
<!-- @end-Errors-template -->

View File

@@ -1,132 +0,0 @@
<!-- Users Files template -->
<IF NAME="user_himself">
<script type="text/javascript">
<!--
function confirm_from()
{
if(confirm('{lang.ARE_YOU_SURE_DO_THIS}'))
return true;
else
return false;
}
function change_color(obj,id,c,c2){c=(c==null)?'ored':c;c2=(c==null)?'osilver':c2;var ii=document.getElementById(id);if(obj.checked){ii.setAttribute("class",c);ii.setAttribute("className",c)}else{ii.setAttribute("class",c2);ii.setAttribute("className",c2)}}function checkAll(form,id,_do_c_,c,c2){for(var i=0;i<form.elements.length;i++){if(form.elements[i].getAttribute("rel")!=id)continue;if(form.elements[i].checked){uncheckAll(form,id,_do_c_,c,c2);break}form.elements[i].checked=true;change_color(form.elements[i],_do_c_+'['+form.elements[i].value+']',c,c2)}}function uncheckAll(form,id,_do_c_,c,c2){for(var i=0;i<form.elements.length;i++){if(form.elements[i].getAttribute("rel")!=id)continue;form.elements[i].checked=false;change_color(form.elements[i],_do_c_+'['+form.elements[i].value+']',c,c2)}}function change_color_exts(id){eval('var ii = document.getElementById("su['+id+']");');eval('var g_obj = document.getElementById("gal_'+id+'");');eval('var u_obj = document.getElementById("ual_'+id+'");');if(g_obj.checked&&u_obj.checked){ii.setAttribute("class",'o_all');ii.setAttribute("className",'o_all')}else if(g_obj.checked){ii.setAttribute("class",'o_g');ii.setAttribute("className",'o_g')}else if(u_obj.checked){ii.setAttribute("class",'o_u');ii.setAttribute("className",'o_u')}else{ii.setAttribute("class",'');ii.setAttribute("className",'')}}function checkAll_exts(form,id,_do_c_){for(var i=0;i<form.elements.length;i++){if(form.elements[i].getAttribute("rel")!=id)continue;if(form.elements[i].checked){uncheckAll_exts(form,id,_do_c_);break}form.elements[i].checked=true;change_color_exts(form.elements[i].value)}}function uncheckAll_exts(form,id,_do_c_){for(var i=0;i<form.elements.length;i++){if(form.elements[i].getAttribute("rel")!=id)continue;form.elements[i].checked=false;change_color_exts(form.elements[i].value)}}
//-->
</script>
</IF>
<div id="content" class="border_radius filecp-page">
<!-- title -->
<h1 class="title"><IF NAME="user_himself">&#9679; {lang.YOUR_FILEUSER}<ELSE>&#9679; {title}</IF></h1>
<!-- @end-title -->
<!-- line top -->
<div class="line"></div>
<!-- @end-line -->
<IF NAME="user_name">
<!-- box user name and all files -->
<div id="boxfileuser">
<div class="box_user">
<img class="right pngfix" src="{STYLE_PATH}images/imguser.png" alt="image user" />
<div class="public">{lang.PUBLIC_USER_FILES}</div>
<div class="uname">{user_name}</div>
</div>
<div class="us3r_n4me">
<img class="right pngfix" src="{STYLE_PATH}images/boxfileuser.png" alt="files number" />
<div class="public">{lang.ALL_FILES}</div>
<div class="nums">{nums_rows}</div>
</div>
<div class="clr"></div>
</div>
<!-- @end-box-user-name-and-all-files -->
</IF>
<IF NAME="user_himself">
<form name="c" action="{action}" method="post" onsubmit="javascript:return confirm_from();">
</IF>
<IF NAME="no_results">
<!-- no files user -->
<div id="boxfileuser" style="text-align:center">
<img class="pngfix" src="{STYLE_PATH}images/warning_nofile.png" />
<br />
<h1>{lang.NO_FILE_USER}</h1>
</div>
<!-- @end-no-files-user -->
<ELSE>
<!-- fileuser_files -->
<div class="fileuser_files">
<div class="fileuser-thumbs">
<LOOP NAME="arr">
{{tdnum}}
<li id="su[{{id}}]" class="<IF LOOP="is_image">is_image<ELSE>is_file</IF>">
<IF LOOP="is_image">
<a href="{{href}}" target="_blank" title="{lang.FILEUPS}:{{uploads}}, {lang.FILESIZE}:{{size}}, {lang.FILEDATE}:{{time}}">
<img src="{{thumb_link}}" alt="{lang.FILEUPS}:{{ups}}, {lang.FILESIZE}:{{size}}, {lang.FILEDATE}:{{time}}" />
</a>
<ELSE>
<div class="filebox" style="background-image:url({{thumb_link}})">
<div class="this_file">
<a href="{{href}}">{{name_file}}</a>
<div class="fileinfo">
<span>{lang.FILEUPS}: {{uploads}}</span>
<span>{lang.FILESIZE}: {{size}}</span>
<span>{lang.FILEDATE}: {{time}}</span>
</div>
</div>
</div>
</IF>
<IF NAME="user_himself">
<p class="kcheck">
<input id="del_{{id}}" name="del_{{id}}" type="checkbox" value="{{id}}" rel="_del" onclick="change_color(this,'su[{{id}}]');" />
</p>
</IF>
</li>
{{tdnum2}}
</LOOP>
</div>
<div class="clr"></div>
</div>
<!-- end#fileuser_files-->
</IF>
<div class="clr"></div><br />
<!-- pagination -->
{page_nums}
<!-- @end-pagination -->
<div class="clr"></div><br />
<IF NAME="user_himself">
<!-- button -->
<div class="left_button"><input type="submit" name="submit_files" value="{lang.DEL_SELECTED}" /></div>
<div class="left_button"><input type="submit" name="submit_all_files" value="{lang.DEL_ALL}" /></div>
<div class="right_button">[ <a href="javascript:void(0);" onclick="checkAll(document.c, '_del', 'su');" title="{lang.CHECK_ALL}">{lang.CHECK_ALL}</a> ]</div>
{H_FORM_KEYS}
<!-- @end-button -->
</form>
<!-- link user -->
<div id="filecplink">
<div class="clr"></div>
<fieldset>
<legend class="copylink">{lang.COPY_AND_GET_DUD}</legend>
<input class="link_user" readonly="readonly" onclick="this.select();" type="text" name="option" value="{your_fileuser}" />
</fieldset>
<div class="clr"></div>
</div>
<!-- @end-link-user -->
</IF>
<div class="clr"></div>
</div>
<!-- @end-Users-Files -->

View File

@@ -1,140 +0,0 @@
<div class="clr"></div>
<!-- Extras Footer -->
(extras.footer?<div class="dot"></div><div class="extras_footer">{extras.footer}</div><div class="dot"></div>:)
<!-- @end-extras-footer -->
</div><!-- @end-wrapper -->
</div><!-- @end-main -->
<!-- begin footer -->
<div class="FooterLine clr"></div>
<div id="footer">
<div class="footer_inner">
<div class="left">
<!--
Powered by kleeja,
Kleeja is Free PHP software, designed to help webmasters by
give their Users ability to upload files yo thier servers.
www.Kleeja.net
-->
</div>
<div class="right">
<!-- Copyrights-->
<div class="Copyrights">
{lang.COPYRIGHTS_X} &copy; <a href="{config.siteurl}">{config.sitename}</a>
</div><!-- @end-Copyrights -->
</div>
<div class="clr"></div>
<!-- button panel --><div class="bu-panel">{admin_page}</div><!-- @end-button-panel -->
<!-- footer stats -->(page_stats?<div class="footer_stats">{page_stats}</div>:)<!-- @end-footer-stats -->
<!-- google analytics -->(googleanalytics?<div class="footer_stats">{googleanalytics}</div>:)<!-- @end-google-analytics -->
</div>
</div>
<!-- @end-footer -->
<div
style="padding:1px;font-size:11px;display:block !important;background:#f7f7f7 !important; color:#888 !important; margin:3px; position:fixed;bottom:0;left:1%;z-index:99999;text-align:center;">
Powered by
<a style="display:inline !important;color:#888 !important;" href="https://kleeja.net/" onclick="window.open(this.href,'_blank');return false;"
title="Kleeja">Kleeja</a>
</div>
<script type="text/javascript" src="{STYLE_PATH}jquery.js"></script>
<!-- don't ever delete this -->
{run_queue}
<script type="text/javascript">
<IF NAME="js_allowed_extensions_types">
$(document).ready(function(){
$('#uploader').submit(function(){
var numfiles = 0;
$("#uploader input:file").each(function() {
if ($(this).get(0).files.length !== 0) {
numfiles++;
}
});
if(numfiles == 0){
alert('{lang.NO_FILE_SELECTED}');
return false;
}
$('#loadbox').css('display', 'block');
$('#uploader').css('display', 'none');
});
$("#uploader input:file").change(function (){
if(!check_selected_file(this)){
$(this).val('');
}else{
if($(this).data('number') !== null){
var selected_text = $('#file-text' + $(this).data('number'));
selected_text.val($(this).val());
//show another one
var current_plus_one = Number($(this).data('number')) + 1;
if($('[data-number="' + current_plus_one + '"]') !== null){
$('[data-number="' + current_plus_one + '"]').show();
}else{
//alert reached limit
}
}
}
});
});
var allowed_exts = {js_allowed_extensions_types};
var allowed_sizes = {js_allowed_extensions_sizes};
function check_selected_file(file) {
var selected_file = file.files[0];
var file_name = selected_file.name;
var ext_dot_position = file_name.lastIndexOf(".");
if(ext_dot_position === -1){
alert('{lang.WRONG_F_NAME}'.replace('%s', file_name));
return false;
}
var file_extension = file_name.substring(ext_dot_position + 1).toLowerCase();
var file_size = selected_file.size;
if(!(allowed_exts.indexOf(file_extension) > -1)){
//extension not allowed message alert
alert('{lang.FORBID_EXT}'.replace('%s', file_extension));
return false;
}else{
//check size
var ext_allowed_size = allowed_sizes[allowed_exts.indexOf(file_extension)];
if(file_size > ext_allowed_size){
//size is larger than allowed message alert
alert('{lang.SIZE_F_BIG}'.replace('%1$s', file_name).replace('%2$s', (ext_allowed_size/1048576).toFixed(2) + ' MB'));
return false;
}
}
return true;
}
function tabs(c1,c2,c3,c4){var m2,m3,l,t;var onclickf=function(){if(l<1)return 0;for(t=0;t<l;t++)if(m2[t]!=this){m2[t].className="";m3[t].style.display="none"}else{m2[t].className=c4;m3[t].style.display="block"}};var cl=function(){if(l<1)return 0;m2[0].className=c4;m3[0].style.display="block";for(t=0;t<l;t++)m2[t].onclick=onclickf};m2=$(c1+" "+c2+" li");if(m2[0]!="undefined"){m3=$(c1+" "+c3);l=m2.length;cl()}}$(document).ready(function(){var mah;mah=new tabs(".tabmain",".tabnav",".tabcon","tabactive")});
</IF>
function update_kleeja_captcha(captcha_file, input_id)
{
document.getElementById(input_id).value = '';
//Get a reference to CAPTCHA image
img = document.getElementById('kleeja_img_captcha');
//Change the image
img.src = captcha_file + '&' + Math.random();
}
</script>
</body>
</html>

View File

@@ -1,63 +0,0 @@
<!-- Password Recovery Template -->
<div id="content" class="border_radius">
<!-- title -->
<h1 class="title">&#9679; {title}</h1>
<!-- @end-title -->
<!-- line top -->
<div class="line"></div>
<!-- @end-line -->
<IF NAME="ERRORS">
<!-- msg, Infos & Alerts & Errors -->
<dl id="system-message">
<dd class="error">
<ul><LOOP NAME="ERRORS">
<li>{%value%}</li></LOOP>
</ul>
</dd>
</dl>
<!-- @end-msg -->
</IF>
<!-- form -->
<form action="{action}" method="post">
<div class="get_password">
<p>{lang.E_GET_LOSTPASS}</p>
<div class="clr"></div>
<label>{lang.EMAIL} :</label>
<input type="text" name="rmail" value="{t_rmail}" size="50" style="direction:ltr;" tabindex="1" />
<div class="clr"></div>
</div>
<div class="clr"></div>
<!-- verification code -->
<IF NAME="config.enable_captcha==1">
<div class="safe_code">
<p>{lang.VERTY_CODE}</p>
<div class="clr"></div>
<div>
<img style="vertical-align:middle;" id="kleeja_img_captcha" src="{captcha_file_path}" alt="{lang.REFRESH_CAPTCHA}" title="{lang.REFRESH_CAPTCHA}" onclick="javascript:update_kleeja_captcha('{captcha_file_path}', 'kleeja_code_answer');" />
<input type="text" name="kleeja_code_answer" id="kleeja_code_answer" tabindex="4" />
</div>
<div class="clr"></div>
<p class="explain">{lang.NOTE_CODE}</p>
</div>
</IF>
<!-- @end-verification-code -->
<div class="clr"></div>
{H_FORM_KEYS}
<input type="submit" name="submit" value="{lang.GET_LOSTPASS}" tabindex="3" />
</form>
<!-- @end-form -->
<div class="clr"></div>
</div>
<!-- @end-Password-Recovery-Template -->

View File

@@ -1,49 +0,0 @@
<!-- List of allowed file template -->
<div id="content" class="border_radius">
<!-- title -->
<h1 class="title">&#9679; {lang.GUIDE_EXP}</h1>
<!-- @end-title -->
<!-- line top -->
<div class="line"></div>
<!-- @end-line -->
<!-- table files allowed -->
<table id="guide" border="0" cellspacing="0" cellpadding="0">
<!-- group list files -->
<LOOP NAME="ttgroups">
<IF LOOP="firstrow">
<IF LOOP="most_firstrow"><ELSE>
</td>
</tr>
<!-- @end-clear -->
<tr>
<td style="width:2%">&nbsp;</td>
</tr>
</IF>
<tr>
<td>
<div class="guide_({{rando}}?right:left)_th">{{group_name}}</div>
</IF>
<div class="guide_({{rando}}?right:left)_ext">
<span class="guide_({{rando}}?right:left)_ext_lang">{lang.EXT} : </span>
<span class="guide_({{rando}}?right:left)_ext_color">{{ext}}</span>
&mdash;
<span class="guide_({{rando}}?right:left)_ext_lang">{lang.SIZE} : </span>
<span class="guide_({{rando}}?right:left)_ext_color">{{size}}</span>
</div>
</LOOP>
</td>
</tr>
<!-- @end-group-list-files -->
</table>
<!-- @end-table-files-allowed -->
<div class="clr"></div>
</div>
<!-- @end-List-allowed-file-template -->

View File

@@ -1,85 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" dir="{dir}">
<!-- Powered by kleeja || URL www.kleeja.net -->
<head>
<title>{title}(title? - :){config.sitename}</title>
<meta http-equiv="Content-Type" content="text/html;charset={charset}" />
<meta http-equiv="Content-Language" content="{lang.LANG_SMALL_NAME}" />
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="copyrights" content="Powered by Kleeja || kleeja.net" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!-- metatags.info/all_meta_tags -->
<link rel="shortcut icon" href="images/favicon.ico" />
<link rel="icon" type="image/gif" href="images/favicon.gif" />
<link rel="apple-touch-icon" href="images/apple-touch-icon.png" />
<link rel="apple-touch-startup-image" href="images/iPhone.png" />
<link rel="stylesheet" type="text/css" media="all" href="{STYLE_PATH}css/stylesheet.css" />
<link rel="stylesheet" type="text/css" media="all" href="{STYLE_PATH}css/color.css" />
<IF NAME="lang.DIR==ltr"><link rel="stylesheet" type="text/css" media="all" href="{STYLE_PATH}css/ltr.css" /></IF>
<script type="text/javascript">
<!--
var number_of_uploads={config.filesnum};
var LANG_PAST_URL_HERE = "{lang.PAST_URL_HERE}";
var LANG_MORE_F_FILES = "{lang.MORE_F_FILES}";
var STYLE_PATH = "{STYLE_PATH}";
-->
</script>
<!-- Extra code -->
{EXTRA_CODE_META}
</head>
<body<IF NAME="go_current == login"> onload="document.login_form.lname.focus();"</IF>>
<!-- begin Main -->
<div id="main">
<!--begin Header-->
<div id="header" class="clearfix">
<h1><a title="{config.sitename}" href="{config.siteurl}" class="logo">{config.sitename}</a></h1>
</div>
<!-- @end-Header -->
<div class="clr"></div>
<!-- begin Top Navigation -->
<div class="top_nav">
<ul class="menu">
<LOOP NAME="top_menu"><IF LOOP="show">
<li><a href="{{url}}" (go_current=={{name}}?class="current":)>{{title}}</a></li>
</IF></LOOP>
</ul>
</div><!-- @end-Top-Navigation -->
<div class="clr"></div>
<!-- begin wrapper -->
<div id="wrapper" class="clearfix">
<IF NAME="extras.header">
<!-- begin extras header -->
<div class="dot"></div>
<div class="extras_header">{extras.header}</div>
<div class="dot"></div>
<!-- @end-extras-header -->
</IF>
<div class="clr"></div>
<!-- begin menu right -->
<div id="sidebar">
<div id="sidebar_box">
<IS_BROWSER!="mobile">
<img src="{user_avatar}" alt="{username}" title="{username}" height="90" width="100" />
</IS_BROWSER>
<ul class="menu">
<LOOP NAME="side_menu"><IF LOOP="show">
<li><a href="{{url}}" (go_current=={{name}}?class="current":)><IS_BROWSER!="mobile"><img src="{STYLE_PATH}images/{{name}}.png" style="float:right;" class="pngfix" alt="{lang.LOGIN}" style="vertical-align:middle;" /></IS_BROWSER>{{title}} <IF LOOP="name==logout">[ {username} ]</IF></a></li>
</IF></LOOP>
</ul>
</div>
<div class="dot clr"></div>
</div><!-- @end-menu-right -->

Binary file not shown.

Before

Width:  |  Height:  |  Size: 524 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 55 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 154 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 155 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 47 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 21 KiB

Some files were not shown because too many files have changed in this diff Show More