aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/events.php9
-rw-r--r--lib/functions.php581
-rw-r--r--lib/hooks.php45
3 files changed, 0 insertions, 635 deletions
diff --git a/lib/events.php b/lib/events.php
deleted file mode 100644
index 21492088c..000000000
--- a/lib/events.php
+++ /dev/null
@@ -1,9 +0,0 @@
-<?php
-
- function translation_editor_upgrade_event($event, $type, $object){
-
- if(defined("UPGRADING") && (UPGRADING == "upgrading")){
- // call action hook function to avoid coding the same thing twice
- translation_editor_actions_hook("action", "upgrading", null, null);
- }
- } \ No newline at end of file
diff --git a/lib/functions.php b/lib/functions.php
deleted file mode 100644
index 2c12c9dad..000000000
--- a/lib/functions.php
+++ /dev/null
@@ -1,581 +0,0 @@
-<?php
-
- /**
- * Returns array of all available plugins and their individual language keys
- *
- * @param string $current_language
- *
- * @return array || false
- */
- function translation_editor_get_plugins($current_language){
- global $CONFIG;
-
- $result = false;
-
- if(!empty($current_language)){
- translation_editor_reload_all_translations();
- translation_editor_load_translations($current_language);
-
- $result = array();
- $core = array();
- $custom_keys = array();
- $plugins_result = array();
-
- $backup_full = $CONFIG->translations;
- $plugins = elgg_get_plugins();
-
- // Core translation
- $CONFIG->translations = array();
- $plugin_language = $CONFIG->path . "languages" . DIRECTORY_SEPARATOR . "en.php";
-
- if(file_exists($plugin_language)){
- include($plugin_language);
-
- unset($CONFIG->translations["en"][""]);
-
- $plugin_keys = $CONFIG->translations["en"];
-
- $key_count = count($plugin_keys);
-
- if(array_key_exists($current_language, $backup_full)){
- $exists_count = $key_count - count(array_diff_key($plugin_keys, $backup_full[$current_language]));
- } else {
- $exists_count = 0;
- }
-
- if($custom_content = translation_editor_read_translation($current_language, "core")){
- $custom_count = count($custom_content);
- } else {
- $custom_count = 0;
- }
-
- $core["core"]["total"] = $key_count;
- $core["core"]["exists"] = $exists_count;
- $core["core"]["custom"] = $custom_count;
- }
-
- // Custom Keys
- $CONFIG->translations = array();
- $custom_keys_original = $CONFIG->dataroot . "translation_editor" . DIRECTORY_SEPARATOR . "custom_keys" . DIRECTORY_SEPARATOR . "en.php";
-
- if(file_exists($custom_keys_original)){
- include($custom_keys_original);
-
- unset($CONFIG->translations["en"][""]);
-
- $plugin_keys = $CONFIG->translations["en"];
-
- $key_count = count($plugin_keys);
-
- if(array_key_exists($current_language, $backup_full)){
- $exists_count = $key_count - count(array_diff_key($plugin_keys, $backup_full[$current_language]));
- } else {
- $exists_count = 0;
- }
-
- if($custom_content = translation_editor_read_translation($current_language, "custom_keys")){
- $custom_count = count($custom_content);
- } else {
- $custom_count = 0;
- }
-
- $custom_keys["custom_keys"]["total"] = $key_count;
- $custom_keys["custom_keys"]["exists"] = $exists_count;
- $custom_keys["custom_keys"]["custom"] = $custom_count;
- } else {
- $custom_keys["custom_keys"]["total"] = 0;
- $custom_keys["custom_keys"]["exists"] = 0;
- $custom_keys["custom_keys"]["custom"] = 0;
- }
-
- // Plugin translations
- foreach($plugins as $plugin){
-
- $title = $plugin->title;
-
- $CONFIG->translations = array();
- $plugin_language = $plugin->getPath() . DIRECTORY_SEPARATOR. "languages" . DIRECTORY_SEPARATOR . "en.php";
-
- if(file_exists($plugin_language)){
-
- include($plugin_language);
-
- unset($CONFIG->translations["en"][""]);
-
- $plugin_keys = $CONFIG->translations["en"];
-
- $key_count = count($plugin_keys);
-
- if(array_key_exists($current_language, $backup_full)){
- $exists_count = $key_count - count(array_diff_key($plugin_keys, $backup_full[$current_language]));
- } else {
- $exists_count = 0;
- }
-
- if($custom_content = translation_editor_read_translation($current_language, $title)){
- $custom_count = count($custom_content);
- } else {
- $custom_count = 0;
- }
-
- $plugins_result[$title]["total"] = $key_count;
- $plugins_result[$title]["exists"] = $exists_count;
- $plugins_result[$title]["custom"] = $custom_count;
- }
- }
-
- ksort($plugins_result);
-
- $result = $core + $custom_keys + $plugins_result;
-
- $CONFIG->translations = $backup_full;
- }
-
- return $result;
- }
-
- /**
- * Returns translation data for a specific plugin
- *
- * @param string $current_language
- * @param string $plugin
- *
- * @return array || false
- */
- function translation_editor_get_plugin($current_language, $plugin){
- global $CONFIG;
-
- $result = false;
-
- if(!empty($current_language) && !empty($plugin)){
-
- translation_editor_reload_all_translations();
- translation_editor_load_translations($current_language);
-
- $result = array();
- $result["total"] = 0;
-
- $backup_full = $CONFIG->translations;
-
- $CONFIG->translations = array();
- $base_path = $CONFIG->path;
-
- if($plugin == "core"){
- // Core translation
- $plugin_language = $base_path . "languages" . DIRECTORY_SEPARATOR . "en.php";
- } elseif($plugin == "custom_keys"){
- $plugin_language = $CONFIG->dataroot . "translation_editor" . DIRECTORY_SEPARATOR . "custom_keys" . DIRECTORY_SEPARATOR . "en.php";
- } else {
- // Plugin translations
- $plugin_language = $base_path . "mod" . DIRECTORY_SEPARATOR . $plugin . DIRECTORY_SEPARATOR. "languages" . DIRECTORY_SEPARATOR . "en.php";
- }
-
- // Fetch translations
- if(file_exists($plugin_language)){
- include($plugin_language);
-
- unset($CONFIG->translations["en"][""]);
-
- $plugin_keys = $CONFIG->translations["en"];
-
- $key_count = count($plugin_keys);
-
- if(array_key_exists($current_language, $backup_full)){
- $exists_count = $key_count - count(array_diff_key($plugin_keys, $backup_full[$current_language]));
- } else {
- $exists_count = 0;
- }
-
- if($custom_content = translation_editor_read_translation($current_language, $plugin)){
- $custom = $custom_content;
- } else {
- $custom = array();
- }
-
- $result["total"] = $key_count;
- $result["exists"] = $exists_count;
- $result["en"] = $plugin_keys;
- $result["current_language"] = array_intersect_key($backup_full[$current_language], $plugin_keys);
- $result["custom"] = $custom;
- }
-
- $CONFIG->translations = $backup_full;
- }
-
- return $result;
- }
-
- function translation_editor_compare_translations($current_language, $translated){
- global $CONFIG;
-
- $result = false;
-
- if(!empty($current_language) && !empty($translated)){
- $result = array();
-
- $backup_full = $CONFIG->translations;
-
- $CONFIG->translations = array();
- translation_editor_reload_all_translations();
-
- foreach($translated as $key => $value){
- $original = clean_line_breaks(trim(html_entity_decode($CONFIG->translations[$current_language][$key], ENT_NOQUOTES, "UTF-8")));
- $new = clean_line_breaks(trim(html_entity_decode($value, ENT_NOQUOTES, "UTF-8")));
-
- if($original != $new && strlen($new) > 0){
- $result[$key] = $new;
- }
- }
-
- $CONFIG->translations = $backup_full;
- }
-
- return $result;
- }
-
- function clean_line_breaks($string){
- return preg_replace("/(\r\n)|(\n|\r)/", PHP_EOL, $string);
- }
-
-
- function translation_editor_write_translation($current_language, $plugin, $translation){
- global $CONFIG;
-
- $result = false;
-
- if(!empty($current_language) && !empty($plugin) && !empty($translation)){
- translation_editor_check_file_structure($current_language);
-
- $base_dir = $CONFIG->dataroot . "translation_editor" . DIRECTORY_SEPARATOR;
- $contents = json_encode($translation);
-
- if($bytes = file_put_contents($base_dir . $current_language . DIRECTORY_SEPARATOR . $plugin . ".json", $contents)){
- $result = $bytes;
- }
- }
-
- return $result;
- }
-
- function translation_editor_read_translation($current_language, $plugin){
- $result = false;
-
- if(!empty($current_language) && !empty($plugin)){
- $base_dir = elgg_get_data_path() . "translation_editor" . DIRECTORY_SEPARATOR;
-
- if(file_exists($base_dir . $current_language . DIRECTORY_SEPARATOR . $plugin . ".json")){
- if($contents = file_get_contents($base_dir . $current_language . DIRECTORY_SEPARATOR . $plugin . ".json")){
- $result = json_decode($contents, true);
- }
-
- }
- }
-
- return $result;
- }
-
- function translation_editor_load_translations($current_language = ""){
- global $CONFIG;
-
- if(empty($current_language)){
- $current_language = get_current_language();
- }
-
- // check if update is needed
- $main_ts = datalist_get("te_last_update_" . $current_language);
- $site_ts = get_private_setting($CONFIG->site_guid, "te_last_update_" . $current_language);
-
- if(!empty($main_ts)){
- if(empty($site_ts) || ($main_ts > $site_ts)){
- if(translation_editor_merge_translations($current_language)){
- set_private_setting($CONFIG->site_guid, "te_last_update_" . $current_language, time());
- }
- }
- } else {
- translation_editor_merge_translations($current_language, true);
- }
-
- // load translations
- if($translations = translation_editor_read_translation($current_language, "translation_editor_merged_" . $CONFIG->site_guid)){
- add_translation($current_language, $translations);
- }
- }
-
- function translation_editor_load_custom_languages(){
- if($custom_languages = elgg_get_plugin_setting("custom_languages", "translation_editor")){
- $custom_languages = explode(",", $custom_languages);
-
- foreach($custom_languages as $lang){
- add_translation($lang, array("" => ""));
- }
- }
- }
-
- function translation_editor_reload_all_translations(){
- global $CONFIG;
-
- static $run_once;
-
- if(isset($run_once)){
- $CONFIG->translations = $run_once;
- } else {
-
- foreach($CONFIG->language_paths as $path => $dummy){
- if($handle = opendir($path)){
- while($language = readdir($handle)){
- if(is_file($path . $language)){
- include($path . $language);
- }
- }
-
- closedir($handle);
- }
- }
-
- $run_once = $CONFIG->translations;
- }
- }
-
- function translation_editor_check_file_structure($current_language){
- $result = false;
-
- if(!empty($current_language)){
- $base_dir = elgg_get_data_path() . "translation_editor" . DIRECTORY_SEPARATOR;
- if(!file_exists($base_dir)){
- mkdir($base_dir);
- }
-
- if(!file_exists($base_dir . $current_language . DIRECTORY_SEPARATOR)){
- mkdir($base_dir . $current_language . DIRECTORY_SEPARATOR);
- }
-
- $result = true;
- }
-
- return $result;
- }
-
- function translation_editor_delete_translation($current_language, $plugin){
- $result = false;
-
- if(!empty($current_language) && !empty($plugin)){
- $filename = elgg_get_data_path() . "translation_editor" . DIRECTORY_SEPARATOR . $current_language . DIRECTORY_SEPARATOR . $plugin . ".json";
-
- if(file_exists($filename)){
- $result = unlink($filename);
- }
- }
-
- return $result;
- }
-
- function translation_editor_get_language_completeness($current_language){
- $result = false;
-
- if(!empty($current_language) && $current_language != "en"){
- $plugins = translation_editor_get_plugins($current_language);
-
- $english_count = 0;
- $current_count = 0;
-
- foreach($plugins as $plugin){
- $english_count += $plugin["total"];
- $current_count += $plugin["exists"];
- }
-
- $result = round(($current_count / $english_count) * 100, 2);
- }
-
- return $result;
- }
-
- function translation_editor_is_translation_editor($user_guid = 0){
- static $editors_cache;
-
- $result = false;
-
- if(empty($user_guid)){
- $user_guid = elgg_get_logged_in_user_guid();
- }
-
- if(!empty($user_guid)){
- // preload all editors
- if(!isset($editors_cache)){
- $editors_cache = array();
-
- $options = array(
- "type" => "user",
- "limit" => false,
- "metadata_name_value_pairs" => array(
- "name" => "translation_editor",
- "value" => true
- ),
- "callback" => "translation_editor_guid_only"
- );
-
- if($guids = elgg_get_entities_from_metadata($options)){
- $editors_cache = $guids;
- }
- }
-
- // is the user an editor or an admin
- if(in_array($user_guid, $editors_cache)){
- $result = true;
- } elseif(($user = get_user($user_guid)) && $user->isAdmin()){
- $result = true;
- } elseif (elgg_get_plugin_setting('everybody_translate', 'translation_editor') == 'yes') {
- $result = true;
- }
- }
-
- return $result;
- }
-
- function translation_editor_unregister_translations(){
- global $CONFIG;
-
- $result = false;
-
- if($disabled_languages = translation_editor_get_disabled_languages()){
- foreach($CONFIG->translations as $key => $dummy){
- if(in_array($key, $disabled_languages)){
- unset($CONFIG->translations[$key]);
- }
- }
-
- $result = true;
- }
-
- return $result;
- }
-
- function translation_editor_search_translation($query, $language = "en"){
- $result = false;
-
- $plugins = translation_editor_get_plugins($language);
- $found = array();
-
- foreach($plugins as $plugin => $data){
- if($translations = translation_editor_get_plugin($language, $plugin)){
- foreach($translations["en"] as $key => $value){
- if(stristr($key, $query) || stristr($value, $query) || (array_key_exists($key, $translations["current_language"]) && stristr($translations["current_language"][$key], $query))){
- if(!array_key_exists($plugin, $found)){
- $found[$plugin] = array(
- "en" => array(),
- "current_language" => array()
- );
- }
-
- $found[$plugin]["en"][$key] = $value;
- if(array_key_exists($key, $translations["current_language"])){
- $found[$plugin]["current_language"][$key] = $translations["current_language"][$key];
- }
- }
- }
-
- if(!empty($found)){
- $result = $found;
- }
- }
- }
-
- return $result;
- }
-
- function translation_editor_merge_translations($language = "", $update = false){
- global $CONFIG;
-
- $result = false;
-
- if(empty($language)){
- $language = get_current_language();
- }
-
- if(!empty($language)){
- $translations = array();
-
- if($core = translation_editor_read_translation($language, "core")){
- $translations = $core;
- }
-
- if($custom_keys = translation_editor_read_translation($language, "custom_keys")){
- $translations += $custom_keys;
- }
-
- if($plugins = elgg_get_plugins()){
- foreach($plugins as $plugin){
- if($plugin_translation = translation_editor_read_translation($language, $plugin->title)){
- $translations += $plugin_translation;
- }
- }
- }
-
- if(!empty($translations)){
- if(translation_editor_write_translation($language, "translation_editor_merged_" . $CONFIG->site_guid, $translations)){
- $result = true;
- }
- } else {
- if(translation_editor_delete_translation($language, "translation_editor_merged_" . $CONFIG->site_guid)){
- $result = true;
- }
- }
- }
-
- if($result){
- elgg_trigger_event("language:merge", "translation_editor", $language);
- }
-
- // reset language cache on all sites
- if($update){
- $ts = time();
-
- datalist_set("te_last_update_" . $language, $ts);
- set_private_setting($CONFIG->site_guid, "te_last_update_" . $language, $ts);
- }
-
- return $result;
- }
-
- /**
- * parses a string meant for printf and returns an array of found parameters
- *
- * @param string $string
- * @return array
- */
- function translation_editor_get_string_parameters($string, $count = true) {
- $valid = '/%[-+]?(?:[ 0]|\'.)?a?\d*(?:\.\d*)?[%bcdeEufFgGosxX]/';
-
- $result = array();
-
- if(!empty($string)){
- if(!$string = preg_replace('/^[^%]*/', '', $string)){
- // no results
- } elseif(preg_match_all($valid, $string, $matches)) {
- $result = $matches[0];
- }
- }
-
- if($count){
- $result = count($result);
- }
-
- return $result;
- }
-
- function translation_editor_get_disabled_languages(){
- static $result;
-
- if(!isset($result)){
- $result = false;
-
- if($disabled_languages = elgg_get_plugin_setting(TRANSLATION_EDITOR_DISABLED_LANGUAGE, "translation_editor")){
- $result = string_to_tag_array($disabled_languages);
- }
- }
-
- return $result;
- }
-
- function translation_editor_guid_only($row){
- return (int) $row->guid;
- }
diff --git a/lib/hooks.php b/lib/hooks.php
deleted file mode 100644
index 486fb0b7a..000000000
--- a/lib/hooks.php
+++ /dev/null
@@ -1,45 +0,0 @@
-<?php
-
- function translation_editor_user_hover_menu($hook, $type, $return, $params) {
- $user = $params['entity'];
-
- if (elgg_is_admin_logged_in() && !($user->isAdmin())){
- // TODO: replace with a single toggle editor action?
- if(translation_editor_is_translation_editor($user->getGUID())){
- $url = "action/translation_editor/unmake_translation_editor?user=" . $user->getGUID();
- $title = elgg_echo("translation_editor:action:unmake_translation_editor");
- } else {
- $url = "action/translation_editor/make_translation_editor?user=" . $user->getGUID();
- $title = elgg_echo("translation_editor:action:make_translation_editor");
- }
-
- $item = new ElggMenuItem('translation_editor', $title, $url);
- $item->setSection('admin');
- $item->setConfirmText(elgg_echo("question:areyousure"));
- $return[] = $item;
-
- return $return;
- }
- }
-
- function translation_editor_actions_hook($hook, $type, $return, $params){
- $allowed_actions = array(
- "admin/plugins/activate",
- "admin/plugins/deactivate",
- "admin/plugins/activate_all",
- "admin/plugins/deactivate_all",
- "admin/plugins/set_priority",
- "upgrading" // not actualy an action but comes from events.php
- );
-
- if(!empty($type) && in_array($type, $allowed_actions)){
- // make sure we have all translations
- translation_editor_reload_all_translations();
-
- if($languages = get_installed_translations()){
- foreach($languages as $key => $desc){
- remove_private_setting(elgg_get_site_entity()->getGUID(), "te_last_update_" . $key);
- }
- }
- }
- } \ No newline at end of file