diff --git a/bl-kernel/admin/controllers/edit-user.php b/bl-kernel/admin/controllers/edit-user.php
index e0146ef1..d9e53ef5 100644
--- a/bl-kernel/admin/controllers/edit-user.php
+++ b/bl-kernel/admin/controllers/edit-user.php
@@ -4,88 +4,6 @@
// Functions
// ============================================================================
-function disableUser($username) {
-
- global $dbUsers;
- global $Language;
- global $Login;
-
- // The editors can't disable users
- if($Login->role()!=='admin') {
- return false;
- }
-
- if( $dbUsers->disableUser($username) ) {
- // Add to syslog
- $Syslog->add(array(
- 'dictionaryKey'=>'user-disabled',
- 'notes'=>$username
- ));
-
- // Create an alert
- Alert::set($Language->g('The changes have been saved'));
- }
-
- return true;
-}
-
-function editUser($args)
-{
- global $dbUsers;
- global $Language;
-
- if( $dbUsers->set($args) ) {
- // Add to syslog
- $Syslog->add(array(
- 'dictionaryKey'=>'user-edited',
- 'notes'=>$args['username']
- ));
-
- // Create an alert
- Alert::set($Language->g('The changes have been saved'));
- }
-
- return true;
-}
-
-function deleteUser($args, $deleteContent=false)
-{
- global $dbUsers;
- global $dbPosts;
- global $Language;
- global $Login;
-
- // The user admin cannot be deleted.
- if($args['username']=='admin') {
- return false;
- }
-
- // The editors cannot delete users.
- if($Login->role()!=='admin') {
- return false;
- }
-
- if($deleteContent) {
- $dbPosts->deletePostsByUser($args['username']);
- }
- else {
- $dbPosts->linkPostsToUser($args['username'], 'admin');
- }
-
- if( $dbUsers->delete($args['username']) ) {
- // Add to syslog
- $Syslog->add(array(
- 'dictionaryKey'=>'user-deleted',
- 'notes'=>$args['username']
- ));
-
- // Create an alert
- Alert::set($Language->g('User deleted'));
- }
-
- return true;
-}
-
// ============================================================================
// Main before POST
// ============================================================================
@@ -96,18 +14,17 @@ function deleteUser($args, $deleteContent=false)
if( $_SERVER['REQUEST_METHOD'] == 'POST' )
{
- // Prevent editors to administrate other users.
- if($Login->role()!=='admin')
- {
+ // Prevent non-administrators to change other users
+ if($Login->role()!=='admin') {
$_POST['username'] = $Login->username();
unset($_POST['role']);
}
if(isset($_POST['delete-user-all'])) {
- deleteUser($_POST, true);
+ deleteUser($_POST, $deleteContent=true);
}
elseif(isset($_POST['delete-user-associate'])) {
- deleteUser($_POST, false);
+ deleteUser($_POST, $deleteContent=false);
}
elseif(isset($_POST['disable-user'])) {
disableUser($_POST['username']);
@@ -115,19 +32,22 @@ if( $_SERVER['REQUEST_METHOD'] == 'POST' )
else {
editUser($_POST);
}
+
+ Alert::set($Language->g('The changes have been saved'));
}
// ============================================================================
// Main after POST
// ============================================================================
+// Prevent non-administrators to change other users
if($Login->role()!=='admin') {
$layout['parameters'] = $Login->username();
}
-$_User = $dbUsers->getUser($layout['parameters']);
+$User = $dbUsers->getUser($layout['parameters']);
// If the user doesn't exist, redirect to the users list.
-if($_User===false) {
+if($User===false) {
Redirect::page('users');
}
diff --git a/bl-kernel/admin/views/edit-user.php b/bl-kernel/admin/views/edit-user.php
index 243d1119..be5d259d 100644
--- a/bl-kernel/admin/views/edit-user.php
+++ b/bl-kernel/admin/views/edit-user.php
@@ -16,7 +16,7 @@ HTML::formOpen(array('id'=>'edit-user-profile-form','class'=>'uk-form-horizontal
// Security token
HTML::formInputHidden(array(
'name'=>'username',
- 'value'=>$_User->username()
+ 'value'=>$User->username()
));
HTML::legend(array('value'=>$L->g('Profile'), 'class'=>'first-child'));
@@ -24,7 +24,7 @@ HTML::formOpen(array('id'=>'edit-user-profile-form','class'=>'uk-form-horizontal
HTML::formInputText(array(
'name'=>'usernameDisable',
'label'=>$L->g('Username'),
- 'value'=>$_User->username(),
+ 'value'=>$User->username(),
'class'=>'uk-width-1-2 uk-form-medium',
'disabled'=>true,
'tip'=>''
@@ -33,7 +33,7 @@ HTML::formOpen(array('id'=>'edit-user-profile-form','class'=>'uk-form-horizontal
HTML::formInputText(array(
'name'=>'firstName',
'label'=>$L->g('First name'),
- 'value'=>$_User->firstName(),
+ 'value'=>$User->firstName(),
'class'=>'uk-width-1-2 uk-form-medium',
'tip'=>''
));
@@ -41,7 +41,7 @@ HTML::formOpen(array('id'=>'edit-user-profile-form','class'=>'uk-form-horizontal
HTML::formInputText(array(
'name'=>'lastName',
'label'=>$L->g('Last name'),
- 'value'=>$_User->lastName(),
+ 'value'=>$User->lastName(),
'class'=>'uk-width-1-2 uk-form-medium',
'tip'=>''
));
@@ -49,7 +49,7 @@ HTML::formOpen(array('id'=>'edit-user-profile-form','class'=>'uk-form-horizontal
echo '
';
@@ -59,7 +59,7 @@ if($Login->role()==='admin') {
'name'=>'role',
'label'=>$L->g('Role'),
'options'=>array('editor'=>$L->g('Editor'), 'admin'=>$L->g('Administrator')),
- 'selected'=>$_User->role(),
+ 'selected'=>$User->role(),
'tip'=>''
));
@@ -68,7 +68,7 @@ if($Login->role()==='admin') {
HTML::formInputText(array(
'name'=>'email',
'label'=>$L->g('Email'),
- 'value'=>$_User->email(),
+ 'value'=>$User->email(),
'class'=>'uk-width-1-2 uk-form-medium',
'tip'=>$L->g('email-will-not-be-publicly-displayed')
));
@@ -78,7 +78,7 @@ if($Login->role()==='admin') {
HTML::formInputText(array(
'name'=>'twitter',
'label'=>'Twitter',
- 'value'=>$_User->twitter(),
+ 'value'=>$User->twitter(),
'class'=>'uk-width-1-2 uk-form-medium',
'tip'=>''
));
@@ -86,7 +86,7 @@ if($Login->role()==='admin') {
HTML::formInputText(array(
'name'=>'facebook',
'label'=>'Facebook',
- 'value'=>$_User->facebook(),
+ 'value'=>$User->facebook(),
'class'=>'uk-width-1-2 uk-form-medium',
'tip'=>''
));
@@ -94,7 +94,7 @@ if($Login->role()==='admin') {
HTML::formInputText(array(
'name'=>'googlePlus',
'label'=>'Google+',
- 'value'=>$_User->googlePlus(),
+ 'value'=>$User->googlePlus(),
'class'=>'uk-width-1-2 uk-form-medium',
'tip'=>''
));
@@ -102,7 +102,7 @@ if($Login->role()==='admin') {
HTML::formInputText(array(
'name'=>'instagram',
'label'=>'Instagram',
- 'value'=>$_User->instagram(),
+ 'value'=>$User->instagram(),
'class'=>'uk-width-1-2 uk-form-medium',
'tip'=>''
));
@@ -119,13 +119,13 @@ if($Login->role()==='admin') {
HTML::formInputText(array(
'name'=>'status',
'label'=>$L->g('сurrent status'),
- 'value'=>$_User->enabled()?$L->g('Enabled'):$L->g('Disabled'),
+ 'value'=>$User->enabled()?$L->g('Enabled'):$L->g('Disabled'),
'class'=>'uk-width-1-2 uk-form-medium',
'disabled'=>true,
- 'tip'=>$_User->enabled()?'':$L->g('To enable the user you have to set a new password')
+ 'tip'=>$User->enabled()?'':$L->g('To enable the user you have to set a new password')
));
-if( $_User->enabled() ) {
+if( $User->enabled() ) {
echo '';
echo '';
-HTML::profileUploader($_User->username());
+HTML::profileUploader($User->username());
echo '
';
echo '';
diff --git a/bl-kernel/boot/init.php b/bl-kernel/boot/init.php
index b3bf0f2a..97e1e19e 100644
--- a/bl-kernel/boot/init.php
+++ b/bl-kernel/boot/init.php
@@ -55,6 +55,7 @@ define('DB_SITE', PATH_DATABASES.'site.php');
define('DB_CATEGORIES', PATH_DATABASES.'categories.php');
define('DB_TAGS', PATH_DATABASES.'tags.php');
define('DB_SYSLOG', PATH_DATABASES.'syslog.php');
+define('DB_USERS', PATH_DATABASES.'users.php');
// Log separator
define('LOG_SEP', ' | ');
@@ -184,6 +185,7 @@ include(PATH_HELPERS.'filesystem.class.php');
include(PATH_HELPERS.'alert.class.php');
include(PATH_HELPERS.'paginator.class.php');
include(PATH_HELPERS.'image.class.php');
+include(PATH_HELPERS.'tcp.class.php');
// Session
Session::start();
diff --git a/bl-kernel/dbsyslog.class.php b/bl-kernel/dbsyslog.class.php
index 1520d2dc..7d9fc99c 100644
--- a/bl-kernel/dbsyslog.class.php
+++ b/bl-kernel/dbsyslog.class.php
@@ -57,6 +57,9 @@ class dbSyslog extends dbJSON
// Insert at beggining of the database
array_unshift($this->db, $data);
+ // Keep just NOTIFICATIONS_AMOUNT notifications
+ $this->db = array_slice($this->db, 0, NOTIFICATIONS_AMOUNT);
+
// Save
return $this->save();
}
diff --git a/bl-kernel/dbusers.class.php b/bl-kernel/dbusers.class.php
index 5f989619..75bbd51a 100644
--- a/bl-kernel/dbusers.class.php
+++ b/bl-kernel/dbusers.class.php
@@ -23,15 +23,55 @@ class dbUsers extends dbJSON
function __construct()
{
- parent::__construct(PATH_DATABASES.'users.php');
+ parent::__construct(DB_USERS);
+ }
+
+ // Disable the user
+ public function disableUser($username)
+ {
+ $args['username'] = $username;
+ $args['password'] = '!';
+
+ return $this->set($args);
+ }
+
+ // Return TRUE if the user exists, FALSE otherwise
+ public function exists($username)
+ {
+ return isset($this->db[$username]);
+ }
+
+ // Set the parameters of a user
+ public function set($args)
+ {
+ // Current database of the user
+ $user = $this->db[$args['username']];
+
+ // Verify arguments with the database fields
+ foreach($args as $field=>$value) {
+ if( isset($this->dbFields[$field]) ) {
+ $value = Sanitize::html($value);
+ settype($value, gettype($this->dbFields[$field]['value']));
+ $user[$field] = $value;
+ }
+ }
+
+ // Save the database
+ $this->db[$args['username']] = $user;
+ return $this->save();
+ }
+
+ // Delete an user
+ public function delete($username)
+ {
+ unset($this->db[$username]);
+ return $this->save();
}
public function getUser($username)
{
- $User = new User();
-
- if($this->userExists($username))
- {
+ if($this->userExists($username)) {
+ $User = new User();
$User->setField('username', $username);
foreach($this->db[$username] as $key=>$value) {
@@ -44,16 +84,11 @@ class dbUsers extends dbJSON
return false;
}
- public function getAll()
- {
- return $this->db;
- }
-
- // Return an array with the username databases, filtered by username.
+// ---- OLD
+ // Returns array with the username databases filtered by username, FALSE otherwise
public function getDb($username)
{
- if($this->userExists($username))
- {
+ if($this->userExists($username)) {
$user = $this->db[$username];
return $user;
@@ -62,6 +97,14 @@ class dbUsers extends dbJSON
return false;
}
+
+ public function getAll()
+ {
+ return $this->db;
+ }
+
+
+
// Return the username associated to an email, if the email does not exists return FALSE.
public function getByEmail($email)
{
@@ -121,63 +164,11 @@ class dbUsers extends dbJSON
return $this->set($args);
}
- // Disable the user
- public function disableUser($username)
- {
- $args['username'] = $username;
- $args['password'] = '!';
- return $this->set($args);
- }
- public function set($args)
- {
- $dataForDb = array();
- $user = $this->getDb($args['username']);
- if($user===false)
- {
- Log::set(__METHOD__.LOG_SEP.'Error occurred when trying to get the username '.$args['username']);
- return false;
- }
- // Verify arguments with the database fields.
- foreach($args as $field=>$value)
- {
- if( isset($this->dbFields[$field]) )
- {
- // Sanitize.
- $tmpValue = Sanitize::html($value);
-
- // Set type.
- settype($tmpValue, gettype($this->dbFields[$field]['value']));
-
- $user[$field] = $tmpValue;
- }
- }
-
- // Save the database
- $this->db[$args['username']] = $user;
- if( $this->save() === false ) {
- Log::set(__METHOD__.LOG_SEP.'Error occurred when trying to save the database file.');
- return false;
- }
-
- return true;
- }
-
- public function delete($username)
- {
- unset($this->db[$username]);
-
- if( $this->save() === false ) {
- Log::set(__METHOD__.LOG_SEP.'Error occurred when trying to save the database file.');
- return false;
- }
-
- return true;
- }
public function add($args)
{
diff --git a/bl-kernel/functions.php b/bl-kernel/functions.php
index 253b022c..4f33a9f4 100644
--- a/bl-kernel/functions.php
+++ b/bl-kernel/functions.php
@@ -251,3 +251,79 @@ function deletePage($key) {
return false;
}
+
+function disableUser($username) {
+ global $dbUsers;
+ global $Login;
+ global $Syslog;
+
+ // The editors can't disable users
+ if($Login->role()!=='admin') {
+ return false;
+ }
+
+ if( $dbUsers->disableUser($username) ) {
+ // Add to syslog
+ $Syslog->add(array(
+ 'dictionaryKey'=>'user-disabled',
+ 'notes'=>$username
+ ));
+
+ return true;
+ }
+
+ return false;
+}
+
+function editUser($args) {
+ global $dbUsers;
+ global $Syslog;
+
+ if( $dbUsers->set($args) ) {
+ // Add to syslog
+ $Syslog->add(array(
+ 'dictionaryKey'=>'user-edited',
+ 'notes'=>$args['username']
+ ));
+
+ return true;
+ }
+
+ return false;
+}
+
+function deleteUser($args, $deleteContent=false)
+{
+ global $dbUsers;
+ global $Login;
+ global $Syslog;
+
+ // The user admin cannot be deleted
+ if($args['username']=='admin') {
+ return false;
+ }
+
+ // The editors can't delete users
+ if($Login->role()!=='admin') {
+ return false;
+ }
+
+ if($deleteContent) {
+ //$dbPosts->deletePostsByUser($args['username']);
+ }
+ else {
+ //$dbPosts->linkPostsToUser($args['username'], 'admin');
+ }
+
+ if( $dbUsers->delete($args['username']) ) {
+ // Add to syslog
+ $Syslog->add(array(
+ 'dictionaryKey'=>'user-deleted',
+ 'notes'=>$args['username']
+ ));
+
+ return true;
+ }
+
+ return false;
+}
\ No newline at end of file
diff --git a/bl-kernel/helpers/tcp.class.php b/bl-kernel/helpers/tcp.class.php
new file mode 100644
index 00000000..73961489
--- /dev/null
+++ b/bl-kernel/helpers/tcp.class.php
@@ -0,0 +1,40 @@
+array(
+ 'method'=>$method
+ ),
+ "ssl"=>array(
+ "verify_peer"=>$verifySSL,
+ "verify_peer_name"=>$verifySSL
+ )
+ );
+ $stream = stream_context_create($options);
+ $output = file_get_contents($url, false, $stream);
+ }
+
+ return $output;
+ }
+
+
+}
\ No newline at end of file
diff --git a/bl-plugins/ping/languages/bg_BG.json b/bl-plugins/ping/languages/bg_BG.json
new file mode 100644
index 00000000..c12b1a39
--- /dev/null
+++ b/bl-plugins/ping/languages/bg_BG.json
@@ -0,0 +1,7 @@
+{
+ "plugin-data":
+ {
+ "name": "За мен",
+ "description": "Кратко описание за вашия сайт или за себе си."
+ }
+}
\ No newline at end of file
diff --git a/bl-plugins/ping/languages/de_CH.json b/bl-plugins/ping/languages/de_CH.json
new file mode 100644
index 00000000..45a153ce
--- /dev/null
+++ b/bl-plugins/ping/languages/de_CH.json
@@ -0,0 +1,7 @@
+{
+ "plugin-data":
+ {
+ "name": "Über",
+ "description": "Kurzer Text über die Website oder zu dir."
+ }
+}
diff --git a/bl-plugins/ping/languages/de_DE.json b/bl-plugins/ping/languages/de_DE.json
new file mode 100644
index 00000000..a226255d
--- /dev/null
+++ b/bl-plugins/ping/languages/de_DE.json
@@ -0,0 +1,7 @@
+{
+ "plugin-data":
+ {
+ "name": "Über",
+ "description": "Kurzer Text über die Website oder zu dir."
+ }
+}
\ No newline at end of file
diff --git a/bl-plugins/ping/languages/en_US.json b/bl-plugins/ping/languages/en_US.json
new file mode 100644
index 00000000..1bcab5c5
--- /dev/null
+++ b/bl-plugins/ping/languages/en_US.json
@@ -0,0 +1,7 @@
+{
+ "plugin-data":
+ {
+ "name": "About",
+ "description": "Little description about your site or yourself."
+ }
+}
\ No newline at end of file
diff --git a/bl-plugins/ping/languages/es_AR.json b/bl-plugins/ping/languages/es_AR.json
new file mode 100644
index 00000000..22b6a7dd
--- /dev/null
+++ b/bl-plugins/ping/languages/es_AR.json
@@ -0,0 +1,7 @@
+{
+ "plugin-data":
+ {
+ "name": "Acerca de",
+ "description": "Breve descripción de ti mismo o sobre tu sitio."
+ }
+}
\ No newline at end of file
diff --git a/bl-plugins/ping/languages/ja_JP.json b/bl-plugins/ping/languages/ja_JP.json
new file mode 100644
index 00000000..353242d5
--- /dev/null
+++ b/bl-plugins/ping/languages/ja_JP.json
@@ -0,0 +1,7 @@
+{
+ "plugin-data":
+ {
+ "name": "About",
+ "description": "サイトやあなた自身についての概要を表示します。"
+ }
+}
\ No newline at end of file
diff --git a/bl-plugins/ping/languages/nl_NL.json b/bl-plugins/ping/languages/nl_NL.json
new file mode 100644
index 00000000..ac7332d4
--- /dev/null
+++ b/bl-plugins/ping/languages/nl_NL.json
@@ -0,0 +1,7 @@
+{
+ "plugin-data":
+ {
+ "name": "Over mij",
+ "description": "Een korte beschrijving over je site of jezelf."
+ }
+}
diff --git a/bl-plugins/ping/languages/ru_RU.json b/bl-plugins/ping/languages/ru_RU.json
new file mode 100644
index 00000000..9854c7f3
--- /dev/null
+++ b/bl-plugins/ping/languages/ru_RU.json
@@ -0,0 +1,7 @@
+{
+ "plugin-data":
+ {
+ "name": "О блоге",
+ "description": "Небольшое описание о вашем сайте или о себя."
+ }
+}
\ No newline at end of file
diff --git a/bl-plugins/ping/languages/tr_TR.json b/bl-plugins/ping/languages/tr_TR.json
new file mode 100644
index 00000000..9a256d61
--- /dev/null
+++ b/bl-plugins/ping/languages/tr_TR.json
@@ -0,0 +1,7 @@
+{
+ "plugin-data":
+ {
+ "name": "Hakkında",
+ "description": "Senin veya siten hakkında kısa bilgiler"
+ }
+}
diff --git a/bl-plugins/ping/languages/uk_UA.json b/bl-plugins/ping/languages/uk_UA.json
new file mode 100644
index 00000000..39cbf511
--- /dev/null
+++ b/bl-plugins/ping/languages/uk_UA.json
@@ -0,0 +1,7 @@
+{
+ "plugin-data":
+ {
+ "name": "Про блог",
+ "description": "Невеликий опис вашого сайту або про Вас."
+ }
+}
\ No newline at end of file
diff --git a/bl-plugins/ping/metadata.json b/bl-plugins/ping/metadata.json
new file mode 100644
index 00000000..a5c64fc0
--- /dev/null
+++ b/bl-plugins/ping/metadata.json
@@ -0,0 +1,10 @@
+{
+ "author": "Bludit",
+ "email": "",
+ "website": "https://plugins.bludit.com",
+ "version": "2.0",
+ "releaseDate": "2017-05-26",
+ "license": "MIT",
+ "compatible": "2.0",
+ "notes": ""
+}
\ No newline at end of file
diff --git a/bl-plugins/ping/plugin.php b/bl-plugins/ping/plugin.php
new file mode 100644
index 00000000..a4260a1b
--- /dev/null
+++ b/bl-plugins/ping/plugin.php
@@ -0,0 +1,32 @@
+array(
+ "verify_peer"=>false,
+ "verify_peer_name"=>false
+ )
+ );
+ $stream = stream_context_create($options);
+ $out = file_get_contents($url, false, $stream);
+ }
+ }
+}
\ No newline at end of file
diff --git a/bl-plugins/version/languages/bg_BG.json b/bl-plugins/version/languages/bg_BG.json
new file mode 100644
index 00000000..c12b1a39
--- /dev/null
+++ b/bl-plugins/version/languages/bg_BG.json
@@ -0,0 +1,7 @@
+{
+ "plugin-data":
+ {
+ "name": "За мен",
+ "description": "Кратко описание за вашия сайт или за себе си."
+ }
+}
\ No newline at end of file
diff --git a/bl-plugins/version/languages/de_CH.json b/bl-plugins/version/languages/de_CH.json
new file mode 100644
index 00000000..45a153ce
--- /dev/null
+++ b/bl-plugins/version/languages/de_CH.json
@@ -0,0 +1,7 @@
+{
+ "plugin-data":
+ {
+ "name": "Über",
+ "description": "Kurzer Text über die Website oder zu dir."
+ }
+}
diff --git a/bl-plugins/version/languages/de_DE.json b/bl-plugins/version/languages/de_DE.json
new file mode 100644
index 00000000..a226255d
--- /dev/null
+++ b/bl-plugins/version/languages/de_DE.json
@@ -0,0 +1,7 @@
+{
+ "plugin-data":
+ {
+ "name": "Über",
+ "description": "Kurzer Text über die Website oder zu dir."
+ }
+}
\ No newline at end of file
diff --git a/bl-plugins/version/languages/en_US.json b/bl-plugins/version/languages/en_US.json
new file mode 100644
index 00000000..1bcab5c5
--- /dev/null
+++ b/bl-plugins/version/languages/en_US.json
@@ -0,0 +1,7 @@
+{
+ "plugin-data":
+ {
+ "name": "About",
+ "description": "Little description about your site or yourself."
+ }
+}
\ No newline at end of file
diff --git a/bl-plugins/version/languages/es_AR.json b/bl-plugins/version/languages/es_AR.json
new file mode 100644
index 00000000..22b6a7dd
--- /dev/null
+++ b/bl-plugins/version/languages/es_AR.json
@@ -0,0 +1,7 @@
+{
+ "plugin-data":
+ {
+ "name": "Acerca de",
+ "description": "Breve descripción de ti mismo o sobre tu sitio."
+ }
+}
\ No newline at end of file
diff --git a/bl-plugins/version/languages/ja_JP.json b/bl-plugins/version/languages/ja_JP.json
new file mode 100644
index 00000000..353242d5
--- /dev/null
+++ b/bl-plugins/version/languages/ja_JP.json
@@ -0,0 +1,7 @@
+{
+ "plugin-data":
+ {
+ "name": "About",
+ "description": "サイトやあなた自身についての概要を表示します。"
+ }
+}
\ No newline at end of file
diff --git a/bl-plugins/version/languages/nl_NL.json b/bl-plugins/version/languages/nl_NL.json
new file mode 100644
index 00000000..ac7332d4
--- /dev/null
+++ b/bl-plugins/version/languages/nl_NL.json
@@ -0,0 +1,7 @@
+{
+ "plugin-data":
+ {
+ "name": "Over mij",
+ "description": "Een korte beschrijving over je site of jezelf."
+ }
+}
diff --git a/bl-plugins/version/languages/ru_RU.json b/bl-plugins/version/languages/ru_RU.json
new file mode 100644
index 00000000..9854c7f3
--- /dev/null
+++ b/bl-plugins/version/languages/ru_RU.json
@@ -0,0 +1,7 @@
+{
+ "plugin-data":
+ {
+ "name": "О блоге",
+ "description": "Небольшое описание о вашем сайте или о себя."
+ }
+}
\ No newline at end of file
diff --git a/bl-plugins/version/languages/tr_TR.json b/bl-plugins/version/languages/tr_TR.json
new file mode 100644
index 00000000..9a256d61
--- /dev/null
+++ b/bl-plugins/version/languages/tr_TR.json
@@ -0,0 +1,7 @@
+{
+ "plugin-data":
+ {
+ "name": "Hakkında",
+ "description": "Senin veya siten hakkında kısa bilgiler"
+ }
+}
diff --git a/bl-plugins/version/languages/uk_UA.json b/bl-plugins/version/languages/uk_UA.json
new file mode 100644
index 00000000..39cbf511
--- /dev/null
+++ b/bl-plugins/version/languages/uk_UA.json
@@ -0,0 +1,7 @@
+{
+ "plugin-data":
+ {
+ "name": "Про блог",
+ "description": "Невеликий опис вашого сайту або про Вас."
+ }
+}
\ No newline at end of file
diff --git a/bl-plugins/version/metadata.json b/bl-plugins/version/metadata.json
new file mode 100644
index 00000000..a5c64fc0
--- /dev/null
+++ b/bl-plugins/version/metadata.json
@@ -0,0 +1,10 @@
+{
+ "author": "Bludit",
+ "email": "",
+ "website": "https://plugins.bludit.com",
+ "version": "2.0",
+ "releaseDate": "2017-05-26",
+ "license": "MIT",
+ "compatible": "2.0",
+ "notes": ""
+}
\ No newline at end of file
diff --git a/bl-plugins/version/plugin.php b/bl-plugins/version/plugin.php
new file mode 100644
index 00000000..0298c169
--- /dev/null
+++ b/bl-plugins/version/plugin.php
@@ -0,0 +1,18 @@
+'');
+ }
+
+ return $json;
+ }
+}
\ No newline at end of file