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 '
- '.$L->g('Change password').' + '.$L->g('Change password').'
'; @@ -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 '
@@ -133,7 +133,7 @@ if( $_User->enabled() ) {
'; } -if( ($Login->role()==='admin') && ($_User->username()!='admin') ) { +if( ($Login->role()==='admin') && ($User->username()!='admin') ) { HTML::legend(array('value'=>$L->g('Delete'))); @@ -152,7 +152,7 @@ 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