File "admin.class.php"
Full Path: /www/wwwroot/shphe-en.com/wp-content/plugins/prisna-wp-translate-automate/classes/admin.class.php
File size: 24.89 KB
MIME-type: --
Charset: utf-8
<?php
/**
* Prisna WP Translate Automate
* http://www.prisna.net/
*
* LICENSE
*
* @package Prisna WP Translate
* @copyright Copyright (c) 2016, Prisna Ltd, www.prisna.net
* @license http://www.prisna.net/license/
* @version 1.1
* @date 2017-04-14
*/
class PrisnaWPTranslateAutomateAdmin {
public static function initialize() {
if (!is_admin())
return;
add_action('admin_init', array('PrisnaWPTranslateAutomateAdmin', '_initialize'));
add_action('admin_head', array('PrisnaWPTranslateAutomateAdmin', '_remove_messages'));
add_action('plugins_loaded', array('PrisnaWPTranslateAutomateAdmin', 'initializeMenus'));
add_filter('plugin_action_links', array('PrisnaWPTranslateAutomateAdmin', 'addSettingsLink'), 10, 2);
add_action('wp_ajax_nopriv_prisna_wp_translate_validate_automated', array('PrisnaWPTranslateAutomateAdminTranslations', '_validate'));
add_action('wp_ajax_prisna_wp_translate_validate_automated', array('PrisnaWPTranslateAutomateAdminTranslations', '_validate'));
add_action('wp_ajax_nopriv_prisna_wp_translate_save_automated_translations', array('PrisnaWPTranslateAutomateAdminTranslations', '_save_automated_translations'));
add_action('wp_ajax_prisna_wp_translate_save_automated_translations', array('PrisnaWPTranslateAutomateAdminTranslations', '_save_automated_translations'));
add_action('wp_ajax_nopriv_prisna_wp_translate_run_automated', array('PrisnaWPTranslateAutomateAdminTranslations', '_run'));
add_action('wp_ajax_prisna_wp_translate_run_automated', array('PrisnaWPTranslateAutomateAdminTranslations', '_run'));
}
public static function _initialize() {
self::_watch_events();
self::_select_language();
self::_load_styles();
self::_load_scripts();
}
public static function addSettingsLink($_links, $_file) {
if (PrisnaWPTranslateCommon::endsWith($_file, 'prisna-wp-translate-automate.php')) {
$link = '<a href="plugins.php?page=' . PrisnaWPTranslateAutomateConfig::getAdminHandle() . '">' . PrisnaWPTranslateAutomateMessage::get('settings_link') . '</a>';
$_links[] = $link;
}
return $_links;
}
protected static function _watch_events() {
@header('X-XSS-Protection: 0');
if (PrisnaWPTranslateAutomateAdminEvents::isGeneratingPoFile())
self::_po();
}
protected static function _po() {
header('Content-Type: text/html; charset=utf-8');
PrisnaWPTranslateAutomateMessage::genPo();
die();
}
protected static function _load_scripts() {
if (PrisnaWPTranslateAutomateAdminEvents::isLoadingAdminPage()) {
wp_enqueue_script('prisna-wp-translate-automate-admin-common', PRISNA_WP_TRANSLATE_JS .'/common.class.js', 'jquery-ui-core', PrisnaWPTranslateConfig::getVersion(), true);
wp_enqueue_script('prisna-wp-translate-automate-admin', PRISNA_WP_TRANSLATE_AUTOMATE_JS .'/admin.class.js', 'jquery-ui-core', PrisnaWPTranslateAutomateConfig::getVersion());
wp_enqueue_script('jquery');
wp_enqueue_script('jquery-ui-core');
wp_enqueue_script('thickbox');
}
}
protected static function _load_styles() {
if (PrisnaWPTranslateAutomateAdminEvents::isLoadingAdminPage() || strpos(PrisnaWPTranslateCommon::getAdminWidgetsUrl(), $_SERVER['REQUEST_URI']) !== false) {
wp_enqueue_style('prisna-wp-translate-admin', PRISNA_WP_TRANSLATE_CSS .'/admin.css', false, PrisnaWPTranslateConfig::getVersion(), 'screen');
wp_enqueue_style('prisna-wp-translate-automate-admin', PRISNA_WP_TRANSLATE_AUTOMATE_CSS .'/admin.css', false, PrisnaWPTranslateAutomateConfig::getVersion(), 'screen');
wp_enqueue_style('thickbox');
}
}
public static function _remove_messages() {
if (PrisnaWPTranslateAutomateAdminEvents::isLoadingAdminPage() || strpos(PrisnaWPTranslateCommon::getAdminWidgetsUrl(), $_SERVER['REQUEST_URI']) !== false)
PrisnaWPTranslateCommon::renderCSS('.update-nag,div.updated,div.error{display:none}');
}
public static function initializeMenus() {
add_action('admin_menu', array('PrisnaWPTranslateAutomateAdmin', '_add_options_page'));
}
public static function _add_options_page() {
if (current_user_can('activate_plugins'))
add_submenu_page('plugins.php', PrisnaWPTranslateAutomateConfig::getName(false, true), PrisnaWPTranslateAutomateConfig::getName(false, true), 'manage_options', PrisnaWPTranslateAutomateConfig::getAdminHandle(), array('PrisnaWPTranslateAutomateAdmin', '_render_main_form'));
}
public static function _render_main_form() {
$form = new PrisnaWPTranslateAutomateAdminForm();
echo $form->render(array(
'type' => 'file',
'base' => PRISNA_WP_TRANSLATE_AUTOMATE_TEMPLATES,
'content' => '/admin/main_form.tpl'
));
}
protected static function _select_language() {
load_plugin_textdomain(PrisnaWPTranslateAutomateConfig::getAdminLanguageDomain(), false, dirname(plugin_basename(__FILE__)) . '/../languages');
}
}
class PrisnaWPTranslateTranslateAutomateConnector {
protected $_text;
protected $_translation;
protected $_from;
protected $_to;
public function __construct($_array) {
$this->_set_properties($_array);
}
public function getProperty($_name) {
return property_exists($this, '_' . $_name) ? $this->{'_' . $_name} : false;
}
protected function _set_properties($_array) {
foreach($_array as $property => $value)
$this->{'_' . $property} = $value;
if (!is_array($this->_text))
$this->_text = array($this->_text);
if (!is_array($this->_translation))
$this->_translation = array($this->_translation);
for ($i=0; $i<count($this->_text); $i++)
$this->_text[$i] = PrisnaWPTranslateCommon::removeEtx($this->_text[$i]);
for ($i=0; $i<count($this->_translation); $i++)
$this->_translation[$i] = PrisnaWPTranslateCommon::removeEtx($this->_translation[$i]);
}
}
class PrisnaWPTranslateAutomateAdminTranslations {
public static function _save_automated_translations() {
$text = PrisnaWPTranslateCommon::getVariable('prisna_tx', 'POST');
$translation = PrisnaWPTranslateCommon::getVariable('prisna_tr', 'POST');
$original_url = PrisnaWPTranslateCommon::getVariable('prisna_rs', 'POST');
$from = PrisnaWPTranslateCommon::getVariable('prisna_sl', 'POST');
$to = PrisnaWPTranslateCommon::getVariable('prisna_tl', 'POST');
$connector = new PrisnaWPTranslateTranslateAutomateConnector(array(
'text' => $text,
'translation' => $translation,
'from' => $from,
'to' => $to
));
$url = PrisnaWPTranslateSeo::removeLanguage(PrisnaWPTranslateCommon::getPathUrl($original_url));
$translate = new PrisnaWPTranslateTranslateTransport($connector);
$translate->setProperty('url', $url);
$translate->setProperty('url_hash', empty($url) ? false : PrisnaWPTranslateCommon::hashUrl($url));
$translate->save();
echo json_encode(array(
'url' => $original_url
));
exit;
}
protected static function _url_is_alive($_url) {
$file_headers = @get_headers($_url);
return $file_headers[0] != 'HTTP/1.1 404 Not Found';
}
protected static function _is_url($_url) {
$url = $_url;
if (PrisnaWPTranslateCommon::startsWith($url, '/'))
$url = PrisnaWPTranslateCommon::getCurrentUrlBase() . $url;
if (!PrisnaWPTranslateCommon::startsWith($url, 'http'))
$url = 'http://' . $url;
return filter_var($url, FILTER_VALIDATE_URL, FILTER_FLAG_PATH_REQUIRED) !== false;
}
protected static function _validate_source_value($_name, $_source) {
$value = PrisnaWPTranslateCommon::getVariable($_name, 'POST');
if (!$_source['success'])
return array(
'success' => false,
'value' => $value
);
if ($value !== false)
$value = trim($value);
if (empty($value))
return array(
'success' => false,
'value' => 'Empty resource value'
);
switch ($_source['value']) {
case PrisnaWPTranslateAutomateMessage::get('automate_source_sitemap'):
if (!self::_is_url($value))
return array(
'success' => false,
'value' => sprintf('%s (invalid)', $value)
);
break;
case PrisnaWPTranslateAutomateMessage::get('automate_source_url'):
$urls = preg_split("/(\n\r|\r\n|\n|\r){1,}/", $value);
$flag = false;
foreach ($urls as $url)
if (self::_is_url(trim($url)))
$flag = true;
if (!$flag)
return array(
'success' => false,
'value' => sprintf('%s (invalid)', $value)
);
break;
case PrisnaWPTranslateAutomateMessage::get('automate_source_category'):
$term = term_exists($value, 'category');
if (empty($term))
return array(
'success' => false,
'value' => sprintf('%s (doesn\'t exist)', $value)
);
break;
}
return array(
'success' => true,
'value' => $value
);
}
protected static function _validate_action($_name) {
$value = PrisnaWPTranslateCommon::getVariable($_name, 'POST');
if ($value !== false)
$value = trim($value);
if (empty($value))
return array(
'success' => false,
'value' => 'Empty action'
);
$mx = array(
'retranslate' => PrisnaWPTranslateAutomateMessage::get('automate_retranslate_url_retranslate'),
'skip' => PrisnaWPTranslateAutomateMessage::get('automate_retranslate_url_skip')
);
if (!array_key_exists($value, $mx))
return array(
'success' => false,
'value' => sprintf('Invalid action: %s', $value)
);
return array(
'success' => true,
'value' => $mx[$value]
);
}
protected static function _validate_source($_name) {
$value = PrisnaWPTranslateCommon::getVariable($_name, 'POST');
if ($value !== false)
$value = trim($value);
if (empty($value))
return array(
'success' => false,
'value' => 'Empty resource'
);
$mx = array(
'sitemap' => PrisnaWPTranslateAutomateMessage::get('automate_source_sitemap'),
'url' => PrisnaWPTranslateAutomateMessage::get('automate_source_url'),
'category' => PrisnaWPTranslateAutomateMessage::get('automate_source_category')
);
if (!array_key_exists($value, $mx))
return array(
'success' => false,
'value' => sprintf('%s (invalid)', $value)
);
return array(
'success' => true,
'value' => $mx[$value]
);
}
protected static function _validate_timeout($_name) {
$value = (int) PrisnaWPTranslateCommon::getVariable($_name, 'POST');
if (empty($value))
return array(
'success' => false,
'value' => 'Invalid time'
);
return array(
'success' => true,
'value' => $value . ' ' . PrisnaWPTranslateAutomateMessage::get('automate_unit_ms')
);
}
protected static function _validate_language($_name) {
$value = PrisnaWPTranslateCommon::getVariable($_name, 'POST');
if (empty($value) || !is_array($value))
return array(
'success' => false,
'value' => 'Empty language'
);
$languages = PrisnaWPTranslateCommon::getLanguages();
$from = PrisnaWPTranslateConfig::getSettingValue('from');
$output = array();
foreach ($value as $language) {
if (!array_key_exists($language, $languages) || $language == $from)
return array(
'success' => false,
'value' => sprintf('%s (invalid)', $language)
);
$output[] = $languages[$language];
}
return array(
'success' => true,
'value' => implode(', ', $output)
);
}
public static function _validate() {
$automate_to = self::_validate_language('prisna_automate_to');
$automate_source = self::_validate_source('prisna_automate_source');
$automate_source_value = self::_validate_source_value('prisna_automate_source_value', $automate_source);
$automate_action = self::_validate_action('prisna_automate_action');
$automate_timeout = self::_validate_timeout('prisna_automate_timeout');
$succes = $automate_to['success'] && $automate_source['success'] && $automate_source_value['success'] && $automate_action['success'] && $automate_timeout['success'];
$result = array(
'success' => $succes,
'from' => PrisnaWPTranslateConfig::getSettingValue('from'),
'validate' => array(
'automate_to' => $automate_to,
'automate_source' => $automate_source,
'automate_source_value' => $automate_source_value,
'automate_action' => $automate_action,
'automate_timeout' => $automate_timeout
)
);
echo json_encode($result);
exit;
}
protected static function _get_urls_from_list($_urls) {
$urls = preg_split("/(\n\r|\r\n|\n|\r){1,}/", $_urls);
$result = array();
foreach ($urls as $temp_url) {
$url = self::_rel2abs($temp_url);
if (self::_is_url(trim($url)))
$result[] = $url;
}
if (count($result) == 0)
return array(
'success' => false,
'message' => 'Invalid list'
);
return array(
'success' => true,
'value' => $result
);
}
protected static function _get_urls_from_category($_name) {
$items = query_posts(
array(
'category_name' => $_name,
'posts_per_page' => -1
)
);
if (empty($items))
return array(
'success' => false,
'message' => 'No resources found'
);
$result = array();
foreach ($items as $item)
$result[] = get_permalink($item);
return array(
'success' => true,
'value' => $result
);
}
protected static function _get_urls_from_sitemap($_url) {
if (!PrisnaWPTranslateCommon::startsWith($_url, 'http'))
$_url = 'http://' . $_url;
if (($response_xml_data = @file_get_contents($_url)) === false) {
return array(
'success' => false,
'message' => sprintf('Error fetching sitemap: %s', $_url)
);
}
else {
libxml_use_internal_errors(true);
$data = simplexml_load_string($response_xml_data);
if (!$data) {
$message = array(sprintf('Error fetching sitemap: %s', $_url));
foreach (libxml_get_errors() as $error)
$message[] = $error->message;
return array(
'success' => false,
'message' => implode('. ', $message)
);
}
}
if (!property_exists($data, 'url'))
return array(
'success' => false,
'message' => sprintf('Invalid sitemap: %s', $_url)
);
$result = array();
foreach($data->url as $url)
$result[] = self::_rel2abs((string) $url->loc);
if (count($result) == 0)
return array(
'success' => false,
'message' => sprintf('Empty sitemap: %s', $_url)
);
return array(
'success' => true,
'value' => $result
);
}
protected static function _rel2abs($rel) {
/* return if already absolute URL */
if (parse_url($rel, PHP_URL_SCHEME) != '') return $rel;
$base = PrisnaWPTranslateCommon::getCurrentUrlBase();
/* queries and anchors */
if ($rel[0]=='#' || $rel[0]=='?') return $base.$rel;
/* parse base URL and convert to local variables:
$scheme, $host, $path */
extract(parse_url($base));
if (!isset($path))
$path = '';
/* remove non-directory element from path */
$path = preg_replace('#/[^/]*$#', '', $path);
/* destroy path if relative url points to root */
if ($rel[0] == '/') $path = '';
/* dirty absolute URL */
$abs = "$host$path/$rel";
/* replace '//' or '/./' or '/foo/../' with '/' */
$re = array('#(/\.?/)#', '#/(?!\.\.)[^/]+/\.\./#');
for($n=1; $n>0; $abs=preg_replace($re, '/', $abs, -1, $n)) {}
/* absolute URL is ready! */
return $scheme.'://'.$abs;
}
protected static function _is_local_url($_url) {
$local_host = $_SERVER['HTTP_HOST'];
$host = parse_url($_url, PHP_URL_HOST);
return $local_host == $host;
}
protected static function _filter_urls($_urls, $_action, $_languages) {
$result = array(
'data' => array()
);
$ix = 0;
foreach ($_urls as $temp_url) {
$url = self::_rel2abs($temp_url);
$success = self::_is_local_url($url);
$aux = array(
'success' => $success,
'value' => $url,
'ix' => $ix
);
if (!$success)
$aux['message'] = PrisnaWPTranslateAutomateMessage::get('automate_hostname_match_error', array($_SERVER['HTTP_HOST'], parse_url($url, PHP_URL_HOST)));
$result['data'][] = $aux;
$ix++;
}
$result['success'] = true;
if ($_action == 'skip')
$result['data'] = self::_filter_existent_urls($result['data'], $_languages);
return $result;
}
protected static function _translated_url($_url, $_languages) {
$from = PrisnaWPTranslateConfig::getSettingValue('from');
$path = PrisnaWPTranslateCommon::stripHost($_url['value']);
$hash = PrisnaWPTranslateCommon::hashUrl($path);
foreach ($_languages as $_language) {
$base = $from . '_' . $_language . '_';
$file = PRISNA_WP_TRANSLATE_CACHE . '/' . $base . $hash . '.xml';
if (is_file($file))
return true;
}
return false;
}
protected static function _filter_existent_urls($_urls, $_languages) {
$result = array();
foreach ($_urls as $url) {
if (!$url['success']) {
$result[] = $url;
continue;
}
if (self::_translated_url($url, $_languages)) {
$url['success'] = false;
$url['message'] = PrisnaWPTranslateAutomateMessage::get('automate_skipped_url');
}
$result[] = $url;
}
return $result;
}
protected static function _get_urls($_source, $_value, $_action, $_language, $_timeout) {
switch ($_source) {
case 'sitemap':
$result = self::_get_urls_from_sitemap($_value);
break;
case 'url':
$result = self::_get_urls_from_list($_value);
break;
case 'category':
$result = self::_get_urls_from_category($_value);
break;
}
if (!$result['success'])
return $result;
$result = self::_filter_urls($result['value'], $_action, $_language);
$result['from'] = PrisnaWPTranslateConfig::getSettingValue('from');
$result['to'] = $_language;
$result['exclude'] = PrisnaWPTranslateConfig::getSettingValue('exclude_selector');
$result['target'] = PrisnaWPTranslateConfig::getSettingValue('target_selector');
$result['home_url'] = PrisnaWPTranslateCommon::getHomeUrl('/');
$result['meta'] = PrisnaWPTranslateConfig::getSettingValue('translate_meta_tags_names');
$result['timeout'] = (int) $_timeout;
return $result;
}
public static function _run() {
$automate_to = PrisnaWPTranslateCommon::getVariable('prisna_automate_to', 'POST');
$automate_source = PrisnaWPTranslateCommon::getVariable('prisna_automate_source', 'POST');
$automate_source_value = PrisnaWPTranslateCommon::getVariable('prisna_automate_source_value', 'POST');
$automate_action = PrisnaWPTranslateCommon::getVariable('prisna_automate_action', 'POST');
$automate_timeout = PrisnaWPTranslateCommon::getVariable('prisna_automate_timeout');
$result = self::_get_urls($automate_source, $automate_source_value, $automate_action, $automate_to, $automate_timeout);
echo json_encode($result);
exit;
}
}
class PrisnaWPTranslateAutomateAdminBaseForm extends PrisnaWPTranslateItem {
public $title_message;
protected $_fields;
public function __construct() {
$this->title_message = PrisnaWPTranslateAutomateMessage::get('plugin_title', PrisnaWPTranslateAutomateConfig::getName());
}
public function render($_options, $_html_encode=false) {
return parent::render($_options, $_html_encode);
}
protected function _prepare_settings() {}
protected function _set_fields() {}
}
class PrisnaWPTranslateAutomateAdminForm extends PrisnaWPTranslateAutomateAdminBaseForm {
public $group_0;
public $nonce;
public $tab;
public $general_message;
public $general_api_key_validate_message;
public $ajax_url;
public $images_url;
public $next_message;
public $back_message;
public $run_message;
public $stop_message;
public $stopping_message;
public $continue_message;
public $queued_message;
public $processing_message;
public $translating_message;
public $saving_message;
public $done_message;
public $timed_out_message;
public $loading_message;
public $saving_translations_from_message;
public $summary_message;
public $language_message;
public $resource_message;
public $url_behavior_message;
public $timeout_message;
public function __construct() {
parent::__construct();
$this->general_message = PrisnaWPTranslateAutomateMessage::get('general_tab');
$this->general_api_key_validate_message = PrisnaWPTranslateAutomateMessage::get('plugin_api_key_validate');
$this->ajax_url = PrisnaWPTranslateCommon::getAjaxUrl();
$this->nonce = wp_nonce_field(PrisnaWPTranslateAutomateConfig::getAdminHandle(), '_prisna_wpnonce');
$this->summary_message = PrisnaWPTranslateAutomateMessage::get('automate_summary');
$this->next_message = PrisnaWPTranslateAutomateMessage::get('automate_next');
$this->back_message = PrisnaWPTranslateAutomateMessage::get('automate_back');
$this->run_message = PrisnaWPTranslateAutomateMessage::get('automate_run');
$this->stop_message = PrisnaWPTranslateAutomateMessage::get('automate_stop');
$this->stopping_message = PrisnaWPTranslateAutomateMessage::get('automate_stopping');
$this->continue_message = PrisnaWPTranslateAutomateMessage::get('automate_continue');
$this->queued_message = PrisnaWPTranslateAutomateMessage::get('automate_queued');
$this->processing_message = PrisnaWPTranslateAutomateMessage::get('automate_processing');
$this->translating_message = PrisnaWPTranslateAutomateMessage::get('automate_translating');
$this->saving_message = PrisnaWPTranslateAutomateMessage::get('automate_saving');
$this->done_message = PrisnaWPTranslateAutomateMessage::get('automate_done');
$this->timed_out_message = PrisnaWPTranslateAutomateMessage::get('automate_timed_out');
$this->loading_message = PrisnaWPTranslateAutomateMessage::get('automate_loading');
$this->saving_translations_from_message = PrisnaWPTranslateAutomateMessage::get('automate_saving_translations_from');
$this->language_message = PrisnaWPTranslateAutomateMessage::get('automate_language');
$this->resource_message = PrisnaWPTranslateAutomateMessage::get('automate_resource');
$this->url_behavior_message = PrisnaWPTranslateAutomateMessage::get('automate_url_behavior');
$this->timeout_message = PrisnaWPTranslateAutomateMessage::get('automate_timeout');
$this->_set_fields();
}
protected function _api_key_validate($_length=56) {
$value = PrisnaWPTranslateConfig::getSettingValue('api_key');
if (empty($value))
return true;
if (strlen($value) != $_length)
return false;
if (strpos($value, 'Purchase') !== false)
return false;
return true;
}
protected function _cache_file_validate() {
if (!$this->_cache_folder_validate())
return true;
$files_validate = PrisnaWPTranslateCommon::areFolderFilesWritable(PRISNA_WP_TRANSLATE_CACHE);
if ($files_validate !== true) {
$this->general_cache_file_validate_message = PrisnaWPTranslateAutomateMessage::get('plugin_cache_file_validate', $files_validate);
return false;
}
return true;
}
protected function _cache_folder_validate() {
return PrisnaWPTranslateCommon::isFolderWritable(PRISNA_WP_TRANSLATE_CACHE);
}
protected function _api_key_google_empty_validate() {
if ($this->_fields['translation_service']->value != 'gt')
return true;
return !empty($this->_fields['google_api_key']->value);
}
public function render($_options, $_html_encode=false) {
$this->_prepare_settings();
if (!array_key_exists('meta_tag_rules', $_options))
$_options['meta_tag_rules'] = array();
$_options['meta_tag_rules'][] = array(
'expression' => $this->_api_key_validate(),
'tag' => 'api_key_validate'
);
$_options['meta_tag_rules'][] = array(
'expression' => $this->_cache_folder_validate(),
'tag' => 'cache_folder_validate'
);
$_options['meta_tag_rules'][] = array(
'expression' => $this->_cache_file_validate(),
'tag' => 'cache_file_validate'
);
return parent::render($_options, $_html_encode);
}
protected function _set_fields() {
if (is_array($this->_fields))
return;
$this->_fields = array();
$settings = PrisnaWPTranslateAutomateConfig::getSettings(true);
foreach ($settings as $key => $setting) {
if (!array_key_exists('type', $setting))
continue;
$field_class = 'PrisnaWPTranslate' . ucfirst($setting['type']) . 'Field';
if ($field_class == 'PrisnaWPTranslateField')
continue;
$this->_fields[$key] = new $field_class($setting);
}
}
protected function _prepare_settings() {
$settings = PrisnaWPTranslateAutomateConfig::getSettings();
$groups = 1;
for ($i=0; $i<$groups+1; $i++) {
$partial = array();
foreach ($this->_fields as $key => $field) {
if ($field->group == $i) {
$field->satisfyDependence($this->_fields);
$partial[] = $field->output();
}
}
$group = 'group_' . $i;
$this->{$group} = implode("\n", $partial);
}
}
}
class PrisnaWPTranslateAutomateAdminEvents {
public static function isLoadingAdminPage() {
return in_array(PrisnaWPTranslateCommon::getVariable('page', 'GET'), array(PrisnaWPTranslateAutomateConfig::getAdminHandle()));
}
public static function isGeneratingPoFile() {
return self::isLoadingAdminPage() && PrisnaWPTranslateCommon::getVariable('prisna-po', 'GET') !== false;
}
}
class PrisnaWPTranslateAutomateCommon {
public static function getTimeoutValues() {
$result = array();
for ($i=10; $i<501; $i=$i+10)
$result[$i] = $i . ' ' . PrisnaWPTranslateAutomateMessage::get('automate_unit_ms');
return $result;
}
}
PrisnaWPTranslateAutomateAdmin::initialize();
?>