Epaper-Error: %2$s %3$s

', $class_error , $message , OPENSSL_VERSION_TEXT ); } } add_action( 'admin_notices', 'tgd_epaper_plugin_test_requirements' ); class TG_Epaper_WP_Plugin { static $sPluginVersion = "1.7.0"; private $aEpaperOptions = array(); private $bKeyRefreshed = false; private $bIsRegistered; //true|false private $sBasePluginPath = '1000grad-epaper/'; private $sTemplatePath = 'views/'; private $sMainTemplate = 'adminpage_epaper_template'; private $sDefaultTitle = 'edelpaper*'; private $ePaperSettingsFormTemplate = 'epaper_settings_form'; private $sDefaultPreviewImage = 'epaper/epaper-ani.gif'; private $sAgbAcceptIndex = 'agb_accepted'; private $sEpaperOptionIndex = 'plugin_epaper_options'; private $sWidgetClassIndex = 'widget_epaperwidgetclass'; //Channel private $oChannelApi = NULL; //Account private $oAccountApi = NULL; //Epaper private $oEpaperApi = NULL; private $sDefaultLang = 'en'; private $sLanguageFallback = 'en'; private $sEpaperOptionsChannelConfig = "channel_config"; private $sEpaperOptionsChannelDefaultUrl = "epaper_default_url"; private $defaultFallback = "http://www.1kcloud.com/ep1KSpot/"; private $sDefaultAccountApiUrl = "http://www.edelpaper.com/html/api/v2/epaper-wsdl"; private $sPage = NULL; private $oView = NULL; private $aTemplateVars = array(); private $bUseMainTemplate = true; private $sTemplate = NULL; private $bIsUpdatedAccountmanager = true; private $sAppUrl = false; //initializes the plugin by setting localization, filters, and administration functions function __construct($bRegisterActions = true) { if(!defined('TGE_PLUGIN_ACCOUNT_API_URI')){ define( 'TGE_PLUGIN_ACCOUNT_API_URI', $this->sDefaultAccountApiUrl); } $this->load_epaper_options(); //Accountmanager 1.0 || 2.0 $this->bIsUpdatedAccountmanager = (!isset($this->aEpaperOptions['apikey_as'])); $this->oView = new stdClass(); $this->oView->isUpdatedAccountmanager = $this->bIsUpdatedAccountmanager; $this->sPage = isset($_GET['page'])?$_GET['page']:NULL; $this->sDefaultLang = $this->getBlogDefaultLanguage(); //Epaper API $this->oChannelApi = new EpaperChannelApi(); $this->oAccountApi = $this->bIsUpdatedAccountmanager?new AccountmanagerApi():new EpaperApikeyApi(); $this->oEpaperApi = new EpaperApi(); $this->sAppUrl = $this->oAccountApi->getAppUrl(); ini_set('max_execution_time', 120); ini_set("soap.wsdl_cache_enabled", 1); ini_set("soap.wsdl_cache_ttl", 86400); $this->is_registered(); if($bRegisterActions == true): //ajax-action add_action( 'wp_ajax_nopriv_epaper_ajax', array( $this, 'fetchAjaxRequest' ) ); add_action( 'wp_ajax_epaper_ajax', array( $this, 'fetchAjaxRequest' ) ); //load plugin translations add_action( 'init', array( $this, 'plugin_textdomain' ) ); //load styles and scripts add_action( 'init', array( $this, 'action_admin_init_register_styles_and_scripts' ) ); add_filter('the_posts', array( $this,'filter_posts_conditionally_add_scripts_and_styles')); //custom actions add_action('admin_menu', array( $this,'action_epaper_integration_menu')); add_shortcode('ePaper', array( $this,'shortcode_epaper')); if($this->is_registered () == true): add_action( 'widgets_init', create_function('', 'return register_widget("EpaperWidgetClass");') ); add_filter('mce_external_plugins', array ($this,'addScriptToTinymce' ) ); add_filter('mce_buttons', array ($this,'registerTgTinyButton' ) ); endif; add_action('add_meta_boxes', array( $this, 'action_add_metabox_epaper' ) ); // drop a warning on each page of the admin when 1000grad-epaper hasn't been configured //add_action( 'admin_notices', array( $this, 'showRegistrationInfo' ) ); endif; //register_uninstall_hook(__FILE__, array('TG_Epaper_WP_Plugin', 'uninstallPlugin')); } public function getRssFeedContent(){ try{ $sRssUrl = sprintf('%s&t=%s', $this->oAccountApi->getRssUrl(), date('dmY')); $oRss = fetch_feed($sRssUrl); if(is_wp_error($oRss)) return array(); $iMaxItems = $oRss->get_item_quantity( 3 ); $oRssItems = $oRss->get_items( 0, $iMaxItems ); $aNews = array(); foreach ( $oRssItems as $oEntry ){ $sDescription = $oEntry->get_description(); $aNews[] = array( 'link' => $oEntry->get_permalink(), 'title' => $oEntry->get_title(), 'description' => substr($sDescription,0, strpos($sDescription, "

")+4), 'date' => $oEntry->get_date() ); } return $aNews; }catch(Exception $e){ return array(); } } public static function uninstallPlugin(){ if ( !defined( 'WP_UNINSTALL_PLUGIN' ) ) exit(); var_dump('uninstall'); exit; } public function checkSoapIsActivated(){ if(extension_loaded('soap') === false || !class_exists('SoapClient')): $this->showWarning(__("The edelpaper plugin requires SOAP extension for PHP (php_soap).

Please ask your system administrator to activate it.
","1000grad-epaper")); return false; endif; return true; } //returns current plugin-version public static function getPluginVersion(){ return self::$sPluginVersion; } public function get($sVar){ return $this->{$sVar}; } public function set($sVar, $sValue){ $this->{$sVar} = $sValue; return true; } //registers plugin-button in tinymce-editor function registerTgTinyButton($aButtons) { array_push($aButtons, "|", "tg_tiny_button"); return $aButtons; } //adds js-script to tinymce-editor function addScriptToTinymce($aPluginArray) { $aPluginArray['tg_tiny_button'] = plugins_url($this->sBasePluginPath.'/js/tg_tinymce.js'); return $aPluginArray; } //initialize default plugin-configuration private function load_epaper_options(){ $this->aEpaperOptions = get_option($this->sEpaperOptionIndex); if($this->aEpaperOptions == false): $this->aEpaperOptions = array( 'wordpressapi' => TGE_PLUGIN_ACCOUNT_API_URI); update_option($this->sEpaperOptionIndex, $this->aEpaperOptions); endif; } //returns registered status public function is_registered(){ $this->apikey = isset($this->aEpaperOptions['apikey'])?$this->aEpaperOptions['apikey']:NULL; if (!empty($this->apikey)) { $this->bIsRegistered = true; } else { $this->bIsRegistered = false; } return $this->bIsRegistered; } //loads plugin translation file public function plugin_textdomain() { load_plugin_textdomain('1000grad-epaper', false, '1000grad-epaper/lang'); } //registers (the pathes of) admin-specific styles and scripts public function action_admin_init_register_styles_and_scripts() { wp_register_style('style_colorbox', plugins_url($this->sBasePluginPath.'colorbox/colorbox.css')); wp_register_style('tg_styles', plugins_url($this->sBasePluginPath.'css/tg_styles.css')); wp_register_script('tg_script_js', plugins_url($this->sBasePluginPath.'js/tg_script.js'), array('jquery')); // benötigt jquery wp_register_script('js_colorbox_min', plugins_url($this->sBasePluginPath.'colorbox/jquery.colorbox-min.js'), array('jquery')); wp_register_script('colorbox-epaper', plugins_url($this->sBasePluginPath.'js/colorbox-epaper.js'), array('jquery')); } //init scripts and styles public function filter_posts_conditionally_add_scripts_and_styles ($posts) { if (!empty($posts)) { wp_enqueue_style('tg_styles'); wp_enqueue_script('jquery'); wp_enqueue_script('js_colorbox_min', plugins_url('1000grad-epaper/colorbox/jquery.colorbox-min.js'), array('jquery')); wp_enqueue_script('colorbox-epaper', plugins_url('1000grad-epaper/js/colorbox-epaper.js'), array('jquery')); wp_enqueue_style('style_colorbox', plugins_url('1000grad-epaper/colorbox/colorbox.css')); return $posts; } return $posts; } //registers and enqueues plugin-specific styles. public function action_enqueue_scripts_for_all_adminpages() { switch($this->sPage): case 'epaper_channels': wp_enqueue_script('jquery'); default: wp_enqueue_style('style_colorbox'); wp_enqueue_style('tg_styles'); wp_enqueue_script('js_colorbox_min'); wp_enqueue_script('colorbox-epaper'); wp_enqueue_script('tg_script_js'); wp_localize_script( 'tg_script_js', 'TGELocalData', array( 'ajaxurl' => admin_url( 'admin-ajax.php' ), 'tge_nonce' => wp_create_nonce( 'epaper_ajax-nonce' ), 'wpcontenturl' => content_url(), 'restUploadUrl' => $this->oEpaperApi->getRestUploadUrl() )); break; endswitch; } //integrate epaper-plugin to main-menu public function action_epaper_integration_menu() { add_action( 'admin_enqueue_scripts', array($this,'action_enqueue_scripts_for_all_adminpages' )); add_menu_page( 'ePaper', 'edelpaper', 'upload_files', 'epaper_channels', array($this, 'adminpage_epaper_channels'), 'data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+DQo8IS0tIEdlbmVyYXRvcjogQWRvYmUgSWxsdXN0cmF0b3IgMTYuMC4wLCBTVkcgRXhwb3J0IFBsdWctSW4gLiBTVkcgVmVyc2lvbjogNi4wMCBCdWlsZCAwKSAgLS0+DQoNCjxzdmcNCiAgIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyINCiAgIHhtbG5zOmNjPSJodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9ucyMiDQogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiDQogICB4bWxuczpzdmc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIg0KICAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIg0KICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIg0KICAgeG1sbnM6aW5rc2NhcGU9Imh0dHA6Ly93d3cuaW5rc2NhcGUub3JnL25hbWVzcGFjZXMvaW5rc2NhcGUiDQogICB2ZXJzaW9uPSIxLjEiDQogICBpZD0iRWJlbmVfMSINCiAgIHg9IjBweCINCiAgIHk9IjBweCINCiAgIHdpZHRoPSIxMjAiDQogICBoZWlnaHQ9IjEyMCINCiAgIHZpZXdCb3g9IjEyMy41MzEgMzI5LjQ2IDEyMCAxMjAiDQogICBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDEyMy41MzEgMzI5LjQ2IDYxMi45NjQgMTQ3LjU0OSINCiAgIHhtbDpzcGFjZT0icHJlc2VydmUiDQogICBpbmtzY2FwZTp2ZXJzaW9uPSIwLjQ4LjUgcjEwMDQwIg0KICAgc29kaXBvZGk6ZG9jbmFtZT0iZWRlbHBhcGVyX2ljb25fZ3JhdS5zdmciPjxtZXRhZGF0YQ0KICAgICBpZD0ibWV0YWRhdGE1NyI+PHJkZjpSREY+PGNjOldvcmsNCiAgICAgICAgIHJkZjphYm91dD0iIj48ZGM6Zm9ybWF0PmltYWdlL3N2Zyt4bWw8L2RjOmZvcm1hdD48ZGM6dHlwZQ0KICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPjxkYzp0aXRsZT48L2RjOnRpdGxlPjwvY2M6V29yaz48L3JkZjpSREY+PC9tZXRhZGF0YT48ZGVmcw0KICAgICBpZD0iZGVmczU1IiAvPjxzb2RpcG9kaTpuYW1lZHZpZXcNCiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIg0KICAgICBib3JkZXJjb2xvcj0iIzY2NjY2NiINCiAgICAgYm9yZGVyb3BhY2l0eT0iMSINCiAgICAgb2JqZWN0dG9sZXJhbmNlPSIxMCINCiAgICAgZ3JpZHRvbGVyYW5jZT0iMTAiDQogICAgIGd1aWRldG9sZXJhbmNlPSIxMCINCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAiDQogICAgIGlua3NjYXBlOnBhZ2VzaGFkb3c9IjIiDQogICAgIGlua3NjYXBlOndpbmRvdy13aWR0aD0iMTA5MCINCiAgICAgaW5rc2NhcGU6d2luZG93LWhlaWdodD0iMTA5NiINCiAgICAgaWQ9Im5hbWVkdmlldzUzIg0KICAgICBzaG93Z3JpZD0iZmFsc2UiDQogICAgIGlua3NjYXBlOnpvb209IjUuMTU1Mjc4NCINCiAgICAgaW5rc2NhcGU6Y3g9IjQ1LjU1NzY3MiINCiAgICAgaW5rc2NhcGU6Y3k9IjczLjc3NDQ5OCINCiAgICAgaW5rc2NhcGU6d2luZG93LXg9IjgyNCINCiAgICAgaW5rc2NhcGU6d2luZG93LXk9IjI0Ig0KICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIwIg0KICAgICBpbmtzY2FwZTpjdXJyZW50LWxheWVyPSJFYmVuZV8xIiAvPjxyZWN0DQogICAgIHg9IjY1LjcyNDk5OCINCiAgICAgeT0iLTcuMDU3OTk3NyINCiAgICAgZGlzcGxheT0ibm9uZSINCiAgICAgd2lkdGg9IjcwOC42NjYwMiINCiAgICAgaGVpZ2h0PSIyMzYuNjY2Ig0KICAgICBpZD0icmVjdDMiDQogICAgIHN0eWxlPSJmaWxsOiMzMzMzMzM7ZGlzcGxheTpub25lIiAvPjxnDQogICAgIGRpc3BsYXk9Im5vbmUiDQogICAgIGlkPSJnNSINCiAgICAgc3R5bGU9ImRpc3BsYXk6bm9uZSINCiAgICAgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMCwtMjcuNTQ4OTk3KSI+PHBhdGgNCiAgICAgICBkaXNwbGF5PSJpbmxpbmUiDQogICAgICAgZD0ibSAxNjEuMzA3LDE4NC43OTIgYyAtNS40OTYsMCAtMTAuMjI0LC0xLjA1MiAtMTQuMTg4LC0zLjE2NSAtMy45NjYsLTIuMTIzIC03LjIxMiwtNC45NDYgLTkuNzI5LC04LjQ0NiAtMi41MjcsLTMuNTI3IC00LjM5NCwtNy41NjMgLTUuNjA5LC0xMi4xMDYgLTEuMjE5LC00LjU0OCAtMS44MjQsLTkuMzAxIC0xLjgyNCwtMTQuMjU2IDAsLTUuMDQ3IDAuNjA1LC05Ljg2OSAxLjgyNCwtMTQuNDYzIDEuMjE3LC00LjU5MyAzLjEzMiwtOC42MjYgNS43NDEsLTEyLjA5MiAyLjYxNCwtMy40NjggNS45MjcsLTYuMjM4IDkuOTM0LC04LjMxNSA0LjAwOCwtMi4wNyA4LjgwOSwtMy4xMDggMTQuMzkzLC0zLjEwOCA4LjU2MSwwIDE1LjYzNCwzLjEwOCAyMS4yMTksOS4zMjggMi43MDUsMy4wNjUgNC44ODksNi41MzMgNi41NTcsMTAuNDA0IDEuNjY4LDMuODc1IDIuNTAyLDguMTk4IDIuNTAyLDEyLjk3NSB2IDkuNDYzIEggMTQ5LjY5IGMgMC4yNzEsMi4xMjcgMC42MDQsNC4yMDggMS4wMTQsNi4yNDkgMC40MDEsMi4wMzYgMS4wNzksMy44NDggMi4wMjYsNS40NTggMC45NDgsMS41OTcgMi4yMywyLjg3OCAzLjg1MiwzLjg2MiAxLjYyMSwwLjk2IDMuNzg2LDEuNDYzIDYuNDg1LDEuNDYzIDMuNDI2LDAgNi4yODcsLTAuODM3IDguNTg0LC0yLjUwNiAyLjI5OSwtMS42NjYgNC40MzQsLTMuODAzIDYuNDIsLTYuNDIgbCAxNC41OTYsOS4xOTEgYyAtMi4xNjYsMy4yOTkgLTQuMzUsNS45NzUgLTYuNTU3LDguMDM5IC0yLjIwOCwyLjA2MyAtNC41NzIsMy42ODMgLTcuMDkyLDQuODcyIC00Ljc4NSwyLjM4OCAtMTAuNjgxLDMuNTczIC0xNy43MTEsMy41NzMgeiBtIDAuNDA2LC02MC41NDIgYyAtMi4wNzQsMCAtMy44MDgsMC4zMTMgLTUuMTk5LDAuOTQgLTEuMzk3LDAuNjMyIC0yLjU1MSwxLjUxNSAtMy40NDgsMi42NCAtMC45LDEuMTMgLTEuNjA0LDIuNDUyIC0yLjA5NSwzLjk4NCAtMC40OTcsMS41MzggLTAuODc2LDMuMTUzIC0xLjE1Miw0Ljg2NCBoIDIzLjc4NiBjIC0wLjI3MSwtMy42OTIgLTEuMzk2LC02LjY2NiAtMy4zNzcsLTguOTE3IC0yLjA3MSwtMi4zNDIgLTQuOTE1LC0zLjUxMSAtOC41MTUsLTMuNTExIHoiDQogICAgICAgaWQ9InBhdGg3Ig0KICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiDQogICAgICAgc3R5bGU9ImZpbGw6I2IyYjJiMjtkaXNwbGF5OmlubGluZSIgLz48cGF0aA0KICAgICAgIGRpc3BsYXk9ImlubGluZSINCiAgICAgICBkPSJtIDI0Ni4wNDIsMTc3LjQ5NCBjIC0yLjYwNywyLjI2MiAtNS4zNTUsNC4wMzUgLTguMjQzLDUuMzMxIC0yLjg4NSwxLjMyMSAtNi4wOCwxLjk2NyAtOS41OTIsMS45NjcgLTkuMzcsMCAtMTYuNjcxLC0zLjY5NiAtMjEuODk2LC0xMS4wODYgLTUuMTM3LC03LjEwNCAtNy43MDMsLTE2LjY2OCAtNy43MDMsLTI4LjY0NSAwLC0xMC4xOCAyLjc0NywtMTguNzQgOC4yNDIsLTI1LjY3NiA1LjY3NSwtNy4wMyAxMi43NDgsLTEwLjU0NiAyMS4yMTksLTEwLjU0NiAyLjc5NiwwIDUuNjA4LDAuNTQyIDguNDQ4LDEuNjI2IDIuODM2LDEuMDggNS4zMzcsMi41MjEgNy40OTcsNC4zMjQgViA4Mi44OTMgaCAxOS44NjggViAxODMuNDQ3IEggMjQ2LjcyIGwgLTAuNjc4LC01Ljk1MyB6IG0gLTcuMjcxLC01MC40MzIgYyAtMS45NjgsLTAuOTc1IC0zLjk4MywtMS40NjQgLTYuMDQ2LC0xLjQ2NCAtMi45NTksMCAtNS4zNTcsMC42NjggLTcuMTkzLDIuMDA0IC0xLjgzNiwxLjMzMSAtMy4yOTUsMy4wNDMgLTQuMzY3LDUuMTM4IC0xLjA4LDIuMDg2IC0xLjc5NCw0LjM3OSAtMi4xNTIsNi44NzIgLTAuMzYxLDIuNDg5IC0wLjUzNCw0Ljg5MSAtMC41MzQsNy4yMDYgMCwyLjMxNCAwLjE3Myw0LjczOSAwLjUzNCw3LjI3IDAuMzU4LDIuNTQgMS4wNzIsNC44MzYgMi4xNTIsNi44NzYgMS4wNzIsMi4wNDEgMi41MzEsMy43MzQgNC4zNjcsNS4wNjEgMS44MzYsMS4zNDYgNC4yMzQsMi4wMTggNy4xOTMsMi4wMTggMi41MDcsMCA0LjU2OSwtMC41MDMgNi4xODQsLTEuNDc3IDEuNjE0LC0wLjk3MSAzLjMxOCwtMi4yNjYgNS4xMDUsLTMuODcxIHYgLTMyLjAyNiBjIC0xLjUyMywtMS40MTkgLTMuMjY5LC0yLjYyNCAtNS4yNDMsLTMuNjA3IHoiDQogICAgICAgaWQ9InBhdGg5Ig0KICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiDQogICAgICAgc3R5bGU9ImZpbGw6I2IyYjJiMjtkaXNwbGF5OmlubGluZSIgLz48cGF0aA0KICAgICAgIGRpc3BsYXk9ImlubGluZSINCiAgICAgICBkPSJtIDMwNC4wMjQsMTg0Ljc5MiBjIC01LjQ5NiwwIC0xMC4yMjUsLTEuMDUyIC0xNC4xODgsLTMuMTY1IC0zLjk2NywtMi4xMjMgLTcuMjEyLC00Ljk0NiAtOS43MywtOC40NDYgLTIuNTI1LC0zLjUyNyAtNC4zOTIsLTcuNTYzIC01LjYwNywtMTIuMTA2IC0xLjIxOSwtNC41NDggLTEuODI1LC05LjMwMSAtMS44MjUsLTE0LjI1NiAwLC01LjA0NyAwLjYwNiwtOS44NjkgMS44MjUsLTE0LjQ2MyAxLjIxNywtNC41OTMgMy4xMywtOC42MjYgNS43NCwtMTIuMDkyIDIuNjE1LC0zLjQ2OCA1LjkyOCwtNi4yMzggOS45MzQsLTguMzE1IDQuMDEsLTIuMDcgOC44MDgsLTMuMTA4IDE0LjM5NSwtMy4xMDggOC41NjEsMCAxNS42MzMsMy4xMDggMjEuMjE4LDkuMzI4IDIuNzA2LDMuMDY1IDQuODksNi41MzMgNi41NTgsMTAuNDA0IDEuNjY3LDMuODc1IDIuNTAxLDguMTk4IDIuNTAxLDEyLjk3NSB2IDkuNDYzIGggLTQyLjQzOCBjIDAuMjcsMi4xMjcgMC42MDUsNC4yMDggMS4wMTMsNi4yNDkgMC40MDMsMi4wMzYgMS4wOCwzLjg0OCAyLjAyOSw1LjQ1OCAwLjk0NywxLjU5NyAyLjIzLDIuODc4IDMuODUxLDMuODYyIDEuNjIxLDAuOTYgMy43ODUsMS40NjMgNi40ODUsMS40NjMgMy40MjUsMCA2LjI4NywtMC44MzcgOC41ODUsLTIuNTA2IDIuMjk3LC0xLjY2NiA0LjQzNSwtMy44MDMgNi40MTgsLTYuNDIgbCAxNC41OTcsOS4xOTEgYyAtMi4xNjUsMy4yOTkgLTQuMzQ5LDUuOTc1IC02LjU1OCw4LjAzOSAtMi4yMDcsMi4wNjMgLTQuNTY5LDMuNjgzIC03LjA5MSw0Ljg3MiAtNC43ODUsMi4zODggLTEwLjY4MiwzLjU3MyAtMTcuNzEyLDMuNTczIHogbSAwLjQwOCwtNjAuNTQyIGMgLTIuMDc2LDAgLTMuODEsMC4zMTMgLTUuMjAxLDAuOTQgLTEuMzk4LDAuNjMyIC0yLjU1LDEuNTE1IC0zLjQ1LDIuNjQgLTAuODk5LDEuMTMgLTEuNjAxLDIuNDUyIC0yLjA5NCwzLjk4NCAtMC40OTgsMS41MzggLTAuODc1LDMuMTUzIC0xLjE1Miw0Ljg2NCBoIDIzLjc4NiBjIC0wLjI2OCwtMy42OTIgLTEuMzk2LC02LjY2NiAtMy4zNzgsLTguOTE3IC0yLjA2OSwtMi4zNDIgLTQuOTEyLC0zLjUxMSAtOC41MTEsLTMuNTExIHoiDQogICAgICAgaWQ9InBhdGgxMSINCiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIg0KICAgICAgIHN0eWxlPSJmaWxsOiNiMmIyYjI7ZGlzcGxheTppbmxpbmUiIC8+PHBhdGgNCiAgICAgICBkaXNwbGF5PSJpbmxpbmUiDQogICAgICAgZD0ibSAzNDcuNDE1LDgyLjg5MyBoIDE5Ljg1NiBWIDE4My40NDcgSCAzNDcuNDE1IFYgODIuODkzIHoiDQogICAgICAgaWQ9InBhdGgxMyINCiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIg0KICAgICAgIHN0eWxlPSJmaWxsOiNiMmIyYjI7ZGlzcGxheTppbmxpbmUiIC8+PC9nPjxnDQogICAgIGRpc3BsYXk9Im5vbmUiDQogICAgIGlkPSJnMTUiDQogICAgIHN0eWxlPSJkaXNwbGF5Om5vbmUiDQogICAgIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAsLTI3LjU0ODk5NykiPjxwYXRoDQogICAgICAgZGlzcGxheT0iaW5saW5lIg0KICAgICAgIGQ9Im0gNDE2LjUxNiwxODQuNzkyIGMgLTIuODY4LDAgLTUuNjk4LC0wLjU0IC04LjQ4MywtMS42MTkgLTIuNzk0LC0xLjA4IC01LjI1NSwtMi41NjcgLTcuNDE0LC00LjQ2NyB2IDMwLjQxNyBoIC0xOS44NyB2IC05OC45MjcgaCAxOS4wNTYgdiA0LjcyNiBjIDIuNDM1LC0xLjg4NyA1LjAwMiwtMy4zNzYgNy43MDIsLTQuNDU2IDIuNzEyLC0xLjA4NyA1LjY0MSwtMS42MjYgOC43OCwtMS42MjYgOS4zODUsMCAxNi42NzksMy42OTYgMjEuODk3LDExLjA4NiA1LjIyMiw3LjIwNiA3LjgzNCwxNi43MTIgNy44MzQsMjguNTEzIDAsMTAuMjcxIC0yLjc4MiwxOC44ODEgLTguMzUyLDI1LjgxMiAtNS42Niw3LjAyNiAtMTIuNzE2LDEwLjU0MSAtMjEuMTUsMTAuNTQxIHogbSAtNC4zMzEsLTU5LjE5NCBjIC0yLjYxNywwIC00LjcyOSwwLjQ2NyAtNi4zOTYsMS40MDQgLTEuNjU2LDAuOTM0IC0zLjM4NCwyLjI0NyAtNS4xNzEsMy45MzUgdiAzMi4wMjIgYyAxLjUxMiwxLjM0IDMuMjM4LDIuNTIgNS4xNzEsMy41NCAxLjkzMywxLjAyMSAzLjk3MiwxLjUzOCA2LjExOSwxLjUzOCAyLjk2MywwIDUuMzYzLC0wLjY3MyA3LjE4OCwtMi4wMDQgMS44NDgsLTEuMzQxIDMuMjczLC0zLjA0OCA0LjMwNywtNS4xMzQgMS4wMzEsLTIuMDk1IDEuNzQsLTQuMzg4IDIuMTQ4LC02Ljg3NiAwLjQwNiwtMi40OTQgMC42LC00Ljg5MiAwLjYsLTcuMjA2IDAsLTMuNDczIC0wLjMxMiwtNi41MjEgLTAuOTM2LC05LjE0MiAtMC42MjYsLTIuNjIxIC0xLjU2MiwtNC44NzIgLTIuODIsLTYuNzM5IC0yLjI0NSwtMy41NTQgLTUuNjUzLC01LjMzOCAtMTAuMjEsLTUuMzM4IHoiDQogICAgICAgaWQ9InBhdGgxNyINCiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIg0KICAgICAgIHN0eWxlPSJmaWxsOiNmNmY2ZjY7ZGlzcGxheTppbmxpbmUiIC8+PHBhdGgNCiAgICAgICBkaXNwbGF5PSJpbmxpbmUiDQogICAgICAgZD0ibSA0OTMuNiwxNzguNDMyIGMgLTMuNDMyLDIuMTczIC02LjgwNCwzLjc3IC0xMC4xMDQsNC44IC0zLjI5LDEuMDMzIC02Ljk3MywxLjU2IC0xMS4wMzksMS41NiAtMi45NzUsMCAtNS43MTEsLTAuNTA0IC04LjE4MSwtMS40ODYgLTIuNDk5LC0wLjk4NCAtNC42MzQsLTIuMzc5IC02LjQ0NSwtNC4xODcgLTEuODEyLC0xLjgwMiAtMy4yMDMsLTMuOTI2IC00LjE5NSwtNi4zNDcgLTAuOTk4LC0yLjQzOCAtMS40OTIsLTUuMTM3IC0xLjQ5MiwtOC4xMTEgMCwtNy40OSAyLjcwMiwtMTMuNDc0IDguMTAxLC0xNy45OCAzLjg4OCwtMy4wNjEgOC4wNTIsLTUuMjY2IDEyLjUwMiwtNi42MjQgNC40NjYsLTEuMzUxIDkuMDQ4LC0yLjQ3NiAxMy43MjcsLTMuMzc3IDEuNzA2LC0wLjM2MSAzLjY5NiwtMC42MzIgNS45NTEsLTAuODEgdiAtNC4xODcgYyAwLC0yLjYxNyAtMC44NjMsLTQuNTA3IC0yLjU2OCwtNS42ODMgLTEuNzE0LC0xLjE2NyAtMy43OSwtMS43NSAtNi4yMTYsLTEuNzUgLTMuNjk0LDAgLTYuNjQ2LDAuODM1IC04Ljg1NCwyLjQ5NiAtMi4yMDgsMS42NjUgLTQuMjU5LDMuOTM4IC02LjE1Myw2LjgyNiBsIC0xMy4yNDcsLTEwIGMgMy4xNTMsLTUuMDQ2IDcuMTg2LC04Ljc2NiAxMi4xMDUsLTExLjE1MSA0Ljg5NiwtMi4zODEgMTAuMjgyLC0zLjU4MiAxNi4xNDcsLTMuNTgyIDEwLjI5NywwIDE3LjYzOSwyLjQxMSAyMi4wNDQsNy4yMzUgNC40MDEsNC44MTcgNi42MDgsMTIuMjcyIDYuNjA4LDIyLjM2MSB2IDM0LjU5OCBjIDAsMi40MzggMC4xNjYsNC40MTQgMC41MjgsNS45NTIgMC4xOTEsMC41MjUgLTAuMDQ2LDEuMDI5IC0wLjY3LDEuNDg3IHYgMi45NzQgaCAtMTcuNjE1IGwgLTAuOTM0LC01LjAxNCB6IG0gLTcuMjcxLC0yNy4wOSBjIC0yLjMyNywwLjQ5OSAtNC41NjEsMS4xOTkgLTYuNjg0LDIuMSAtMi4xMjMsMC45MDIgLTMuOTI0LDIuMDkyIC01LjQxMywzLjU4MiAtMS40ODYsMS40NzkgLTIuMjI4LDMuNCAtMi4yMjgsNS43MzggMCwxLjk5NCAwLjU3MiwzLjU3OCAxLjcsNC43OTkgMS4xMjgsMS4yMjcgMi43MTMsMS44MjYgNC44MDEsMS44MjYgMi40MjMsMCA0LjkxOCwtMC43NDYgNy40ODQsLTIuMjMyIDIuNTY5LC0xLjQ4OCA0Ljc1MywtMi45NTEgNi41NjQsLTQuMzkzIHYgLTEyLjcwNSBjIC0xLjgwOSwwLjM2NiAtMy44NzEsMC43OTIgLTYuMjI0LDEuMjg1IHoiDQogICAgICAgaWQ9InBhdGgxOSINCiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIg0KICAgICAgIHN0eWxlPSJmaWxsOiNmNmY2ZjY7ZGlzcGxheTppbmxpbmUiIC8+PHBhdGgNCiAgICAgICBkaXNwbGF5PSJpbmxpbmUiDQogICAgICAgZD0ibSA1NTkuMjMsMTg0Ljc5MiBjIC0yLjg3NywwIC01LjcxLC0wLjU0IC04LjQ5MSwtMS42MTkgLTIuNzg0LC0xLjA4IC01LjI1NywtMi41NjcgLTcuNDAyLC00LjQ2NyB2IDMwLjQxNyBoIC0xOS44NyB2IC05OC45MjcgaCAxOS4wNTEgdiA0LjcyNiBjIDIuNDM5LC0xLjg4NyA1LjAwNiwtMy4zNzYgNy43MTksLTQuNDU2IDIuNjg4LC0xLjA4NCA1LjYxNCwtMS42MjYgOC43ODIsLTEuNjI2IDkuMzU1LDAgMTYuNjUyLDMuNjk2IDIxLjg4NCwxMS4wODYgNS4yMzEsNy4yMDYgNy44NDcsMTYuNzEyIDcuODQ3LDI4LjUxMyAwLDEwLjI3MSAtMi43ODQsMTguODg2IC04LjM2MywyNS44MjIgLTUuNjUzLDcuMDE2IC0xMi43MDcsMTAuNTMxIC0yMS4xNTcsMTAuNTMxIHogbSAtNC4zNDEsLTU5LjE5NCBjIC0yLjU5LDAgLTQuNzI4LDAuNDcxIC02LjM4MiwxLjQwNCAtMS42NTYsMC45MzQgLTMuMzg1LDIuMjQ3IC01LjE3MSwzLjkzNSB2IDMyLjAxOCBjIDEuNTIyLDEuMzQ1IDMuMjUsMi41MjEgNS4xNzEsMy41NTUgMS45MTksMS4wMDcgMy45NiwxLjUzMiA2LjExNSwxLjUzMiAyLjk1NCwwIDUuMzU0LC0wLjY3MiA3LjIwMSwtMi4wMTggMS44MjYsLTEuMzI2IDMuMjY0LC0zLjA0NyA0LjI5NCwtNS4xMzMgMS4wMzIsLTIuMDg2IDEuNzUyLC00LjM3OSAyLjE0OCwtNi44NjcgMC40MDksLTIuNDg5IDAuNjEyLC00Ljg5MiAwLjYxMiwtNy4yMDYgMCwtMy40NzMgLTAuMzExLC02LjUyMSAtMC45NDYsLTkuMTQyIC0wLjYyNywtMi42MjEgLTEuNTc0LC00Ljg3MiAtMi44MjEsLTYuNzM5IC0yLjI0MiwtMy41NTUgLTUuNjM3LC01LjMzOSAtMTAuMjIxLC01LjMzOSB6Ig0KICAgICAgIGlkPSJwYXRoMjEiDQogICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCINCiAgICAgICBzdHlsZT0iZmlsbDojZjZmNmY2O2Rpc3BsYXk6aW5saW5lIiAvPjxwYXRoDQogICAgICAgZGlzcGxheT0iaW5saW5lIg0KICAgICAgIGQ9Im0gNjI3LjAxNywxODQuNzkyIGMgLTUuNDk1LDAgLTEwLjIyMiwtMS4wNTIgLTE0LjE4MiwtMy4xNjUgLTMuOTcyLC0yLjEyMyAtNy4yMjIsLTQuOTQ2IC05Ljc0MiwtOC40NDYgLTIuNTIsLTMuNTI3IC00LjM5MywtNy41NjMgLTUuNjAzLC0xMi4xMDYgLTEuMjE0LC00LjU0OCAtMS44MjMsLTkuMzAxIC0xLjgyMywtMTQuMjU2IDAsLTUuMDQ3IDAuNjA5LC05Ljg2OSAxLjgyMywtMTQuNDYzIDEuMjEsLTQuNTkzIDMuMTMxLC04LjYyNiA1Ljc0OCwtMTIuMDkyIDIuNjEyLC0zLjQ2OCA1LjkyNiwtNi4yMzggOS45MzQsLTguMzE1IDQuMDA4LC0yLjA3IDguODA4LC0zLjEwOCAxNC4zODUsLTMuMTA4IDguNTU2LDAgMTUuNjMzLDMuMTA4IDIxLjIyNSw5LjMyOCAyLjY5OSwzLjA2NSA0Ljg4Nyw2LjUzMyA2LjU1MSwxMC40MDQgMS42NjksMy44NzUgMi40OTgsOC4xOTggMi40OTgsMTIuOTc1IHYgOS40NjMgaCAtNDIuNDI1IGMgMC4yNjEsMi4xMjcgMC42MDEsNC4yMDggMS4wMDcsNi4yNDkgMC40MDYsMi4wMzYgMS4wNzksMy44NDggMi4wMjYsNS40NTggMC45NDYsMS41OTcgMi4yMzIsMi44NzggMy44NTMsMy44NjIgMS42MTksMC45NiAzLjc5NCwxLjQ2MyA2LjQ3OSwxLjQ2MyAzLjQzMiwwIDYuMjg3LC0wLjgzNyA4LjU5MywtMi41MDYgMi4zMDIsLTEuNjY2IDQuNDM4LC0zLjgwMyA2LjQxOSwtNi40MiBsIDE0LjYwMSw5LjE5MSBjIC0yLjE3MiwzLjI5OSAtNC4zNTUsNS45NzUgLTYuNTYyLDguMDM5IC0yLjIxLDIuMDYzIC00LjU3MiwzLjY4MyAtNy4wOTIsNC44NzIgLTQuNzc5LDIuMzg4IC0xMC42OCwzLjU3MyAtMTcuNzEzLDMuNTczIHogbSAwLjQwOCwtNjAuNTQyIGMgLTIuMDc1LDAgLTMuODEzLDAuMzEzIC01LjIwNiwwLjk0IC0xLjM5MiwwLjYzMiAtMi41NDQsMS41MTUgLTMuNDQzLDIuNjQgLTAuODk3LDEuMTMgLTEuNTk1LDIuNDUyIC0yLjA5NywzLjk4NCAtMC40OTYsMS41MzggLTAuODY1LDMuMTUzIC0xLjE1Myw0Ljg2NCBoIDIzLjc5MSBjIC0wLjI3NCwtMy42OTIgLTEuNDAzLC02LjY2NiAtMy4zNzMsLTguOTE3IC0yLjA3NCwtMi4zNDIgLTQuOTE5LC0zLjUxMSAtOC41MTksLTMuNTExIHoiDQogICAgICAgaWQ9InBhdGgyMyINCiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIg0KICAgICAgIHN0eWxlPSJmaWxsOiNmNmY2ZjY7ZGlzcGxheTppbmxpbmUiIC8+PHBhdGgNCiAgICAgICBkaXNwbGF5PSJpbmxpbmUiDQogICAgICAgZD0ibSA2OTIuOTc0LDEzMi44OTYgYyAtMi43OTYsMi4yNTUgLTQuNjQ2LDQuMzczIC01LjU0Niw2LjM1IHYgNDQuMjAxIGggLTE5Ljg1NiB2IC03My4yNTEgaCAxOC41MDMgdiA4LjM3NSBjIDIuNDM0LC0zLjU5OSA1LjMwMywtNi4xMjQgOC41ODksLTcuNTY1IDMuMjg4LC0xLjQzOSA3LjA5MSwtMi4xNjYgMTEuNDIzLC0yLjE2NiB2IDIwLjgxNiBsIC00LjA1NywtMC4yNzEgYyAtMi45NzYsLTAuMDkxIC02LjAwMiwxLjA4MSAtOS4wNTYsMy41MTEgeiINCiAgICAgICBpZD0icGF0aDI1Ig0KICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiDQogICAgICAgc3R5bGU9ImZpbGw6I2Y2ZjZmNjtkaXNwbGF5OmlubGluZSIgLz48L2c+PHBvbHlnb24NCiAgICAgZGlzcGxheT0ibm9uZSINCiAgICAgcG9pbnRzPSI3MjQuNTAzLDYxLjU3NCA3MzAuMTg5LDczLjEwOCA3NDIuOTIxLDc0Ljk1NiA3MzMuNzA2LDgzLjkzIDczNS44OSw5Ni42MTMgNzI0LjUwMyw5MC42MjQgNzEzLjExNiw5Ni42MTMgNzE1LjMwMiw4My45MyA3MDYuMDg2LDc0Ljk1NiA3MTguODA3LDczLjEwOCAiDQogICAgIGlkPSJwb2x5Z29uMjciDQogICAgIHN0eWxlPSJmaWxsOiNkZWRjMDA7ZGlzcGxheTpub25lIg0KICAgICB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLC0yNy41NDg5OTcpIiAvPjxnDQogICAgIGlkPSJnMjkiDQogICAgIHRyYW5zZm9ybT0idHJhbnNsYXRlKDIwLjk0OTQwMiwtMTUuMzI4NTEyKSINCiAgICAgc3R5bGU9ImZpbGw6Izk5OTk5OTtmaWxsLW9wYWNpdHk6MSI+PHBhdGgNCiAgICAgICBkPSJtIDE1NC44ODIsNDUyLjY3NyBjIC01LjQ5NSwwIC0xMC4yMjMsLTEuMDUxIC0xNC4xODgsLTMuMTY0IC0zLjk2NiwtMi4xMjMgLTcuMjEyLC00Ljk0NSAtOS43MywtOC40NDUgLTIuNTI2LC0zLjUyNyAtNC4zOTMsLTcuNTYyIC01LjYwOCwtMTIuMTA1IC0xLjIxOSwtNC41NDkgLTEuODI0LC05LjMwMSAtMS44MjQsLTE0LjI1NiAwLC01LjA0NyAwLjYwNSwtOS44NjkgMS44MjQsLTE0LjQ2MyAxLjIxNywtNC41OTUgMy4xMzIsLTguNjI3IDUuNzQxLC0xMi4wOTMgMi42MTMsLTMuNDY5IDUuOTI3LC02LjIzNyA5LjkzNCwtOC4zMTUgNC4wMDgsLTIuMDcgOC44MDgsLTMuMTA3IDE0LjM5MiwtMy4xMDcgOC41NjIsMCAxNS42MzUsMy4xMDcgMjEuMjIsOS4zMjggMi43MDUsMy4wNjQgNC44ODksNi41MzMgNi41NTcsMTAuNDA0IDEuNjY4LDMuODc1IDIuNTAyLDguMTk2IDIuNTAyLDEyLjk3NSB2IDkuNDYzIGggLTQyLjQzNyBjIDAuMjcxLDIuMTI3IDAuNjA0LDQuMjA3IDEuMDE0LDYuMjQ4IDAuNDAxLDIuMDM3IDEuMDc5LDMuODQ4IDIuMDI2LDUuNDU5IDAuOTQ3LDEuNTk2IDIuMjMsMi44NzcgMy44NTIsMy44NjEgMS42MjEsMC45NjEgMy43ODYsMS40NjMgNi40ODUsMS40NjMgMy40MjYsMCA2LjI4NywtMC44MzYgOC41ODQsLTIuNTA2IDIuMjk5LC0xLjY2NiA0LjQzNCwtMy44MDMgNi40MiwtNi40MiBsIDE0LjU5Niw5LjE5MSBjIC0yLjE2NiwzLjI5OSAtNC4zNSw1Ljk3NSAtNi41NTcsOC4wMzkgLTIuMjA4LDIuMDYyIC00LjU3MiwzLjY4NCAtNy4wOTMsNC44NzEgLTQuNzgzLDIuMzg5IC0xMC42OCwzLjU3MiAtMTcuNzEsMy41NzIgeiBtIDAuNDA2LC02MC41NCBjIC0yLjA3NSwwIC0zLjgwOCwwLjMxMyAtNS4yLDAuOTQgLTEuMzk2LDAuNjMxIC0yLjU1LDEuNTE0IC0zLjQ0NywyLjYzOSAtMC45LDEuMTMyIC0xLjYwNCwyLjQ1MyAtMi4wOTYsMy45ODQgLTAuNDk3LDEuNTM5IC0wLjg3NiwzLjE1NCAtMS4xNTEsNC44NjUgaCAyMy43ODYgYyAtMC4yNzEsLTMuNjkzIC0xLjM5NiwtNi42NjYgLTMuMzc3LC04LjkxOCAtMi4wNzEsLTIuMzQgLTQuOTE0LC0zLjUxIC04LjUxNSwtMy41MSB6Ig0KICAgICAgIGlkPSJwYXRoMzEiDQogICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCINCiAgICAgICBzdHlsZT0iZmlsbDojOTk5OTk5O2ZpbGwtb3BhY2l0eToxIiAvPjwvZz48cG9seWdvbg0KICAgICBwb2ludHM9IjcyOS40NjYsMzY0LjUgNzE4LjA3NywzNTguNTA5IDcwNi42OTEsMzY0LjUgNzA4Ljg3OCwzNTEuODE2IDY5OS42NiwzNDIuODQxIDcxMi4zODMsMzQwLjk5NCA3MTguMDc3LDMyOS40NiA3MjMuNzY1LDM0MC45OTQgNzM2LjQ5NSwzNDIuODQxIDcyNy4yODEsMzUxLjgxNiAiDQogICAgIGlkPSJwb2x5Z29uNTEiDQogICAgIHRyYW5zZm9ybT0idHJhbnNsYXRlKC01MDAuMDcwMDEsOC45MTg0ODE5KSINCiAgICAgc3R5bGU9ImZpbGw6Izk5OTk5OTtmaWxsLW9wYWNpdHk6MSIgLz48L3N2Zz4=' ); if ($this->bIsRegistered === false): add_submenu_page( 'epaper_channels', 'ePaper '.__('Registration','1000grad-epaper'), __('Registration','1000grad-epaper'), 'upload_files', 'epaper_apikey', array($this, 'adminpage_epaper_apikey') ); else: add_submenu_page( 'epaper_channels', // parent 'ePaper '.__('Manage Subscription','1000grad-epaper'), __('Manage Subscription','1000grad-epaper'), 'upload_files', 'epaper_subscription', array($this, 'adminpage_epaper_subscription') ); endif; //add_options_page( 'edelpaper', 'edelpaper', 'upload_files','epaper_settings', array($this,'adminpage_epaper_settings')); } //add metabox to page|post-editor public function action_add_metabox_epaper() { if ($this->bIsRegistered === true) { add_meta_box('epaper_editorbox', 'edelpaper', array($this, 'meta_box_epaper'), 'post', 'side', 'high'); add_meta_box('epaper_editorbox', 'edelpaper', array($this, 'meta_box_epaper'), 'page', 'side', 'high'); return true; } return false; } //shows registration-info, if isRegistered == false public function showRegistrationInfo() { if ($this->bIsRegistered === false && !isset($_POST['registration_key_requested']) && (!isset($_GET['email']) && !isset($_GET['code']) )) { $sMessage = sprintf("%s

%s", __( "edelpaper is not registered yet.", '1000grad-epaper' ), sprintf(__( "Please %sregister your installation%s.", '1000grad-epaper' ), "", "")); $this->showInfo($sMessage); } } //shortcode function of plugin public function shortcode_epaper($aArgs) { if (isset($aArgs['url'])) return " "; if ($this->bIsRegistered === true) { $iChannel = (isset($aArgs['nr']) && !empty($aArgs['nr']))?$aArgs['nr']:1; $iPage = (isset($aArgs['page']) && !empty($aArgs['page']))?$aArgs['page']:1; $oChannels = $this->getChannels(); $oChannel = isset($oChannels->channels[($iChannel-1)])?$oChannels->channels[($iChannel-1)]:NULL; if($oChannel == NULL) return false; $sClass = (isset($aArgs['class']) && !empty($aArgs['class']))?$aArgs['class']:'alignleft'; $sLink = $this->getEpaperLink($oChannel, NULL, array('class' => $sClass, 'page' => $iPage)); $this->bUseMainTemplate = false; $this->oView->class = $sClass; $this->oView->link = $sLink; ob_start(); $this->showContent(); $sShortcodeContent = ob_get_contents(); ob_end_clean(); return $sShortcodeContent; } return false; } //registration-adminpage public function adminpage_epaper_apikey() { if(isset($_POST['register_account'])): $this->sendRegistrationEmail(); $sEmail = (isset($_POST['apikey_email']) && !empty($_POST['apikey_email']))?$_POST['apikey_email']:NULL; if($sEmail !== NULL): $this->aEpaperOptions['email'] = $sEmail; update_option($this->sEpaperOptionIndex, $this->aEpaperOptions); endif; endif; $this->oView->aRssContent = $this->getRssFeedContent(); $this->oView->registration_error = false; $this->oView->email_submitted = true; $this->oView->message = NULL; $this->oView->registration_code_entered = false; //Accountmanager 2.0 if(isset($_GET['apikey'])){ $this->oView->apikey = trim(htmlspecialchars($_GET['apikey'])); $this->oView->email = trim(htmlspecialchars($_GET['email'])); $this->oView->registration_code_entered = true; $this->aEpaperOptions['email'] = $this->oView->email; $this->aEpaperOptions['url'] = $this->oAccountApi->getApiUrl(); //$oResult->apiurl; $this->aEpaperOptions['apikey'] = $this->oView->apikey; update_option($this->sEpaperOptionIndex, $this->aEpaperOptions); $this->bIsRegistered = true; $this->showInfo(sprintf('%s', __("

Now you can use this edelpaper Plugin!

", '1000grad-epaper'))); }else{ delete_option($this->oAccountApi->getOptionIndex()); $this->oView->registerUrl = $this->oAccountApi->getRegisterUrl(); } $this->aTemplateVars = array('TITLE' => __("edelpaper Registration","1000grad-epaper")); $this->sTemplate = 'adminpage_epaper_apikey'; $this->bUseMainTemplate = true; $this->showContent(); } //registration-email private function sendRegistrationEmail(){ $sEmail = trim(htmlspecialchars($_POST['apikey_email'])); $bAgb = isset($_POST['agb'])?true:false; $bNewsletter = isset($_POST['newsletter'])?true:false; $sLanguage = __("en",'1000grad-epaper'); global $wp_version; $sWordpressVersion = $wp_version; $sPhpVersion = phpversion(); $sAdminUrl = admin_url(); $sSubject = "wordpress"; $sWordpressCode = ""; $aEpaperOptions = array( 'email' => $sEmail, 'text' => $sSubject, 'agb' => ($bAgb === true)?'yes':'no', 'wordpressapi' => TGE_PLUGIN_ACCOUNT_API_URI, 'newsletter' => ($bNewsletter === true)?'yes':'no' ); update_option($this->sEpaperOptionIndex, $aEpaperOptions); try { $sResponseMessage = $this->oAccountApi->getRegistrationCodeByEmail($sEmail, $sSubject, $sAdminUrl, NULL, NULL, $sWordpressCode, ($bAgb === true)?'yes':'no', ($bNewsletter === true)?'yes':'no', $sWordpressVersion ,$sPhpVersion, $sLanguage); if(isset($sResponseMessage['info'])): $sMessage = $sResponseMessage['info']; $this->showInfo($sMessage); elseif(isset($sResponseMessage['error'])): $sMessage = $sResponseMessage['error']; $this->showWarning($sMessage); endif; } catch (SoapFault $e) { $this->showWarning("error on receiving apikey. ".$e->getMessage()); die(); } } //subscription-adminpage public function adminpage_epaper_subscription() { $this->showRegistrationInfo(); try { $sLanguage = substr(get_bloginfo ( 'language' ), 0, 2); $sPPButton = $this->oAccountApi->getPPButtonCode(($sLanguage != NULL && $sLanguage != false)?$sLanguage:'en'); }catch(SoapFault $e){ $this->showWarning("error while connecting to account-api ".$e->getMessage()); die(); } if(!$this->bIsUpdatedAccountmanager && is_object($sPPButton) && get_class($sPPButton) == 'WP_Error' && $this->bKeyRefreshed == false){ $this->bKeyRefreshed = true; $this->oAccountApi->refreshKeys(); $this->load_epaper_options(); $this->adminpage_epaper_subscription(); return false; }else if($this->bIsUpdatedAccountmanager){ $this->oView->manageAccountUrl = $this->oAccountApi->getManageAccountUrl(); } $this->oView->button_code = (is_string($sPPButton))?json_decode($sPPButton):array(); $this->aTemplateVars = array('TITLE' => sprintf('%s - %s', $this->sDefaultTitle, __("Manage Your Subscription",'1000grad-epaper'))); $this->showContent(); } //settings-adminpage /*public function adminpage_epaper_settings() { $this->showRegistrationInfo(); $this->oView->feedback_sent = false; $this->aTemplateVars = array('TITLE' => sprintf('%s - %s',$this->sDefaultTitle, 'Settings')); global $tge_plugin_data; $tge_plugin_data = get_plugin_data(__FILE__); //save settings if (isset($_GET['epaper-settings-save'])) $this->saveEpaperSettings(); if (isset($_POST['feedback'])): $this->saveEpaperFeedback(); endif; $this->sTemplate = "adminpage_epaper_settings"; $this->showContent(); }*/ //action of feedback-form /*private function saveEpaperFeedback(){ $sText = $_POST['text']; global $wp_version; $sLanguage = __("en",'1000grad-epaper'); $sWordpressVersion = $wp_version; $sPhpVersion = phpversion(); $sPluginVersion = $this->getPluginVersion(); $this->oView->feedback_sent = $this->oAccountApi->sendFeedback($this->aEpaperOptions['email'], $sText, NULL, admin_url(), NULL, NULL,$sWordpressVersion, $sPhpVersion, $sLanguage, $sPluginVersion ); }*/ //saving epaper-settings private function saveEpaperSettings(){ $this->aEpaperOptions['url'] = htmlspecialchars($_GET['epaper_url']); $this->aEpaperOptions['wordpressapi'] = htmlspecialchars($_GET['epaper_wordpressapi']); $this->aEpaperOptions['apikey'] = htmlspecialchars($_GET['epaper_apikey']); $this->aEpaperOptions['apikey_as'] = htmlspecialchars($_GET['apikey_as']); update_option($this->sEpaperOptionIndex, $this->aEpaperOptions); } //returns object of user-channels public function getChannels($bUpdate = NULL){ if(isset($this->aEpaperOptions[$this->sEpaperOptionsChannelConfig]) && $bUpdate == false) return json_decode($this->aEpaperOptions[$this->sEpaperOptionsChannelConfig]); $oChannels = $this->getChannelConfigObject(); $this->aEpaperOptions[$this->sEpaperOptionsChannelConfig] = json_encode($oChannels); update_option($this->sEpaperOptionIndex, $this->aEpaperOptions); return $oChannels; } //returns info-object of user-channel public function getChannelInfos($iChannelId = NULL, $bForceRefresh = false){ if($iChannelId == NULL) return false; if($bForceRefresh): $oChannel = json_decode($this->oChannelApi->getChannelInfo($this->aEpaperOptions['apikey'], $iChannelId)); return $oChannel; else: $oChannelConfig = $this->getChannelConfigObject()->channels; foreach($oChannelConfig as $iIndex => $oChannel): if($oChannel->id == $iChannelId) return $oChannel; endforeach; endif; return false; } //returns info-object of user-epaper public function getEpaperInfos($iEpaperId = NULL, $bForceRefresh = false){ if($iEpaperId == NULL) return false; if($bForceRefresh): $oEpaper = json_decode($this->oEpaperApi->returnEpaperInfos($this->aEpaperOptions['apikey'], $iEpaperId)); return $oEpaper; else: $oChannelConfig = $this->getChannelConfigObject()->channels; foreach($oChannelConfig as $iIndex => $oChannel): if($oChannel->epaperInfo->id == $iEpaperId) return $oChannel->epaperInfo; endforeach; endif; return false; } //channel-list public function adminpage_epaper_channels(){ if (isset($_POST['agb'])): $this->aEpaperOptions[$this->sAgbAcceptIndex] = true; update_option($this->sEpaperOptionIndex, $this->aEpaperOptions); endif; $this->showRegistrationInfo(); $this->clearAllChannelPreviewImages(); $this->oView->bAgbWasAccepted = $this->agbWasAccepted(); $this->oView->sAdminUrl = get_admin_url(); $this->oView->sAppUrl = $this->sAppUrl; if($this->bIsRegistered == true) $this->oView->channelobject = $this->getChannelConfigObject(true); $this->oView->aRssContent = $this->getRssFeedContent(); $this->aTemplateVars = array('TITLE' => $this->sDefaultTitle); $this->bUseMainTemplate = true; $this->sTemplate = 'adminpage_epaper_channels'; if(!$this->bIsUpdatedAccountmanager){ $this->showWarning(sprintf('
%s

%s

',__("Our WordPress plugin is moving. We will shut down the formerly used server for the Plugin on the 31st of March 2016!"), _("To use the new version it is necessary to perform an update of your plugin by clicking the button below. In the last step you have to go though a new registration."))); $this->sTemplate = 'adminpage_update_accountmanager'; } $this->showContent(); } //backend warning-box public function showWarning($sMessage){ $this->aTemplateVars = array('MESSAGE' => $sMessage); $this->bUseMainTemplate = false; $this->sTemplate = 'adminpage_epaper_warning'; $this->showContent(); } //backend info-box public function showInfo($sMessage){ $this->aTemplateVars = array('MESSAGE' => $sMessage); $this->bUseMainTemplate = false; $this->sTemplate = 'adminpage_epaper_info'; $this->showContent(); } //metabox public function meta_box_epaper() { $this->oView->channelobject = $this->getChannels(); $this->bUseMainTemplate = false; $this->showContent(); } //returns default-link of empty channel public function getEpaperDefaultLink(){ if(!isset($this->aEpaperOptions[$this->sEpaperOptionsChannelDefaultUrl]) || !is_string($this->aEpaperOptions[$this->sEpaperOptionsChannelDefaultUrl])){ $this->aEpaperOptions[$this->sEpaperOptionsChannelDefaultUrl] = $this->oAccountApi->getDefaultEpaperUrl(); update_option($this->sEpaperOptionIndex, $this->aEpaperOptions); } return $this->aEpaperOptions[$this->sEpaperOptionsChannelDefaultUrl]; } //returns link to epaper public function getEpaperLink($channel = NULL, $epaper = NULL, $aConfig = array()){ //$epaper can be integer or object (epaper_id | oEpaper) //$channel can be integer or object (channel_id | oChannel //link == 0 => overlay, link == 1 => extern $iDefault = 0; if($channel == NULL) return false; $oChannelInfo = is_object($channel)?$channel:$this->getChannelInfos($channel); $epaper = ($epaper == NULL)?$oChannelInfo->id_epaper:$epaper; $oEpaperInfo = is_object($epaper)?$epaper:$this->getEpaperInfos($epaper); if(isset($oEpaperInfo->settings->add_export_info)): $oLinksettings = json_decode($oEpaperInfo->settings->add_export_info); $iLinkType = isset($oLinksettings->linktype)?$oLinksettings->linktype:$iDefault; else: $iLinkType = 0; endif; if($oEpaperInfo == NULL){ $sEpaperLink = $this->getEpaperDefaultLink(); $sClass = 'class="ePaper"'; $sImageSrc = sprintf('%s%s',$this->getEpaperDefaultLink(), $this->sDefaultPreviewImage); }else{ $iPage = isset($aConfig['page'])?$aConfig['page']:NULL; $sEpaperLink = sprintf('%s%s', $oChannelInfo->url, ($iPage != NULL)?sprintf('#%u', $iPage):NULL); $sClass = ($iLinkType == 0)?'class="ePaper"':NULL; $sImageSrc = sprintf('%s%s', $oChannelInfo->url, $this->sDefaultPreviewImage); } $aImageSrc = $this->getChannelPreviewImage($oChannelInfo->id, $sImageSrc); $sParameter = is_user_logged_in()?sprintf('%s%u',"?rnd=",rand(1000,9999)):NULL; $protocol = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' || $_SERVER['SERVER_PORT'] == 443) ? "https://" : "http://"; $img_url = preg_replace("/([htp]+s?:\/\/)/", $protocol, $aImageSrc['url']); return sprintf(' ', $sEpaperLink, $sClass, $img_url, $sParameter); } //returns path|url of preview-image public function getChannelPreviewImage($iChannelId = NULL, $sImageSrc = NULL){ if($iChannelId == NULL) return false; $aUploadUrl = wp_upload_dir(); $sFilename = sprintf('epaper_preview_%u.gif', $iChannelId); $sFilePath = sprintf("%s/%s", $aUploadUrl['basedir'], $sFilename); $sFileUrl = sprintf("%s/%s", $aUploadUrl['baseurl'], $sFilename); if($sImageSrc == NULL): $sImageSrc = sprintf('%s%s',$this->getChannelInfos($iChannelId)->url, $this->sDefaultPreviewImage); endif; if(!file_exists($sFilePath) || (file_exists($sFilePath) && filesize($sFilePath) === 0)): $sImage = @file_get_contents($sImageSrc); $bFileExist = @file_put_contents($sFilePath, $sImage); if($bFileExist === false || (file_exists($sFilePath) && filesize($sFilePath) === 0)): $sFileUrl = $sImageSrc; endif; endif; return array('path' => $sFilePath, 'url' => $sFileUrl); } //clears cached preview-image of specified channel public function clearChannelPreviewImage($iChannelId){ $aFile = $this->getChannelPreviewImage($iChannelId); if(file_exists($aFile['path'])) @unlink($aFile['path']); } //clears cached preview-image of all channels public function clearAllChannelPreviewImages(){ if($this->bIsRegistered == true): $channelConfig = $this->getChannelConfigObject(); if(isset($channelConfig->channels)){ foreach($channelConfig->channels as $oChannel): $this->clearChannelPreviewImage($oChannel->id); endforeach; } endif; } //ajax action function fetchAjaxRequest() { $this->refreshChannelConfigObject(); $sActionOption = isset($_POST['ajax_option'])?$_POST['ajax_option']:NULL; if($sActionOption == NULL && isset($_GET['ajax_option'])) $sActionOption = $_GET['ajax_option']; switch($sActionOption): case 'startRendering': $iPdfId = $_POST['pdfId']; $sOldEpaperId = $_POST['oldEpaperId']; $iChannelId = $_POST['channel_id']; $sFilename = isset($_POST['filename'])?$_POST['filename']:'edelpaper'; $sDocumentName = str_replace(".pdf", "", $sFilename); ob_start(); if($sOldEpaperId != ''): try { $this->oChannelApi->removeEpaperFromChannel($this->aEpaperOptions['apikey'], $iChannelId); $this->oEpaperApi->epaperDelete($this->aEpaperOptions['apikey'], $sOldEpaperId); } catch (SoapFault $e) { // } endif; ob_end_clean(); $iNewEpaperId = $this->oEpaperApi->epaperCreateFromPdf($this->aEpaperOptions['apikey'], $iPdfId); $aExtraInfo = array('linktype' => 0); $this->oEpaperApi->epaperSetVar($this->aEpaperOptions['apikey'], $iNewEpaperId, "is_pdf_download", 0); $this->oEpaperApi->epaperSetVar($this->aEpaperOptions['apikey'], $iNewEpaperId, "flashplayer_version", 'ng2'); $this->oEpaperApi->epaperSetVar($this->aEpaperOptions['apikey'], $iNewEpaperId, "pdf_name", $sDocumentName); $this->oEpaperApi->epaperSetVar($this->aEpaperOptions['apikey'], $iNewEpaperId, "title", $sDocumentName); $this->oEpaperApi->epaperSetVar($this->aEpaperOptions['apikey'], $iNewEpaperId, 'add_export_info', json_encode($aExtraInfo)); $this->oEpaperApi->epaperSetVar($this->aEpaperOptions['apikey'], $iNewEpaperId, 'language', $this->getEpaperDefaultLanguage()); foreach($this->getChannels()->channels as $iChannel => $aChannelConfig): if($aChannelConfig->id == $iChannelId): $this->oChannelApi->setChannelTitle($this->aEpaperOptions['apikey'], $iChannelId, sprintf('edelpaper Channel #%u', ($iChannel+1))); endif; endforeach; $this->oEpaperApi->epaperStartRenderprocess($this->aEpaperOptions['apikey'], $iNewEpaperId); echo $iNewEpaperId; break; //renderstatus case 'renderstatus': $sMethod = isset($_POST['epaperId'])?'$_POST':'$_GET'; $iEpaperId = ($sMethod == '$_GET')?$_GET['epaperId']:$_POST['epaperId']; switch($sMethod): case '$_POST': $oInfos = json_decode($this->oEpaperApi->returnEpaperInfos($this->aEpaperOptions['apikey'],$iEpaperId)); $sJson = json_encode(array( 'render_percent' => $oInfos->renderprocess->percent, 'render_pages_text' => sprintf('(%s %u/%u)', __('page','1000grad-epaper'), $oInfos->renderprocess->current_page, $oInfos->pages) )); echo $sJson; break; case '$_GET': $bRenderReady = false; while($bRenderReady == false): $oInfos = json_decode($this->oEpaperApi->returnEpaperInfos($this->aEpaperOptions['apikey'],$iEpaperId)); $sJson = json_encode(array( 'render_percent' => $oInfos->renderprocess->percent, 'render_pages_text' => sprintf('(%s %u/%u)', __('page','1000grad-epaper'), $oInfos->renderprocess->current_page, $oInfos->pages) )); header('Content-Type: text/event-stream'); header('Cache-Control: no-cache'); echo "data: ".$sJson; echo "\n\n"; ob_end_flush(); flush(); sleep(1); $bRenderReady = ($oInfos->renderprocess->percent == 100)?true:false; endwhile; break; endswitch; break; //publishstatus case 'publishstatus': $sMethod = isset($_POST['epaperId'])?'$_POST':'$_GET'; $iEpaperId = ($sMethod == '$_GET')?$_GET['epaperId']:$_POST['epaperId']; $iChannelId = ($sMethod == '$_GET')?$_GET['channelId']:$_POST['channelId']; $sOutput = NULL; switch($sMethod): case '$_POST': $oInfos = json_decode($this->oEpaperApi->returnEpaperInfos($this->aEpaperOptions['apikey'],$iEpaperId)); $oChannelInfo = $this->getChannelInfos($iChannelId); if($oInfos->published == 0 && $oInfos->status == 'ready' && $oChannelInfo->id_epaper == ''): $this->oChannelApi->publishEpaperToChannel($this->aEpaperOptions['apikey'],$iEpaperId, $iChannelId); $sOutput = 0; elseif( ($oInfos->published == 0 && $oChannelInfo->status != '' && $oInfos->status == 'do_publish_to_channel')): $sOutput = 50; elseif( ($oInfos->published == 0 && $oChannelInfo->status != '' && $oInfos->status == 'do_publish')): $sOutput = 60; elseif($oInfos->status == 'ready' && $oChannelInfo->status == '' && $oChannelInfo->id_epaper != ''): $sOutput = 100; elseif($oChannelInfo->status == '' && $oChannelInfo->id_epaper != ''): $sOutput = 70; elseif($oChannelInfo->status == ''): $sOutput = 80; elseif($oChannelInfo->id_epaper != ''): $sOutput = 90; elseif('y' == 'y'): $sOutput = 95; endif; echo $sOutput; break; case '$_GET': $bPublishReady = false; while($bPublishReady == false): $oInfos = json_decode($this->oEpaperApi->returnEpaperInfos($this->aEpaperOptions['apikey'],$iEpaperId)); $oChannelInfo = $this->getChannelInfos($iChannelId); if($oInfos->published == 0 && $oInfos->status == 'ready' && $oChannelInfo->id_epaper == ''): $this->oChannelApi->publishEpaperToChannel($this->aEpaperOptions['apikey'],$iEpaperId, $iChannelId); $sOutput = 0; elseif( ($oInfos->published == 0 && $oChannelInfo->status != '' && $oInfos->status == 'do_publish_to_channel') || $oInfos->published == 1): $sOutput = 50; elseif($oChannelInfo->status == ''): $sOutput = 100; $bPublishReady = true; endif; header('Content-Type: text/event-stream'); header('Cache-Control: no-cache'); echo "data: ".$sOutput; echo "\n\n"; flush(); sleep(1); endwhile; break; endswitch; break; //reload channellist case 'loadChannelList': $this->adminpage_epaper_channels(); break; //tinymce case 'tg_tiny_mce_button': $this->oView->channelobject = $this->getChannels(); $this->bUseMainTemplate = false; $this->sTemplate = 'tiny_mce_box'; $this->showContent(); break; //clear Channel case 'clearChannel': $iChannelId = isset($_POST['channel'])?$_POST['channel']:NULL; if($iChannelId != NULL): $oChannelInfo = $this->getChannelInfos($iChannelId); try { $this->oChannelApi->removeEpaperFromChannel($this->aEpaperOptions['apikey'], $iChannelId); $this->oEpaperApi->epaperDelete($this->aEpaperOptions['apikey'], $oChannelInfo->id_epaper); } catch (SoapFault $e) { $this->showWarning("error while clearing channel. ".$e->getMessage()); } endif; $this->adminpage_epaper_channels(); break; //save epaper-settings case 'setEpaperSettings': $iEpaperId = isset($_POST['epaper_id'])?$_POST['epaper_id']:NULL; $iChannelId = isset($_POST['channel_id'])?$_POST['channel_id']:NULL; $bPublish = (isset($_POST['do_publish']) && $_POST['do_publish'] == 'false')?false:true; $aExtraInfos = array(); $aEpaperSettings = $this->getEpaperSettings(); if($iEpaperId == NULL || $iChannelId == NULL) return false; foreach($_POST['data'] as $iIndex => $aConfig): $aFieldSettings = (isset($aEpaperSettings[$aConfig['name']]))?$aEpaperSettings[$aConfig['name']]:NULL; switch($aFieldSettings['save_option']): case 'extra_infos': $aExtraInfos[$aConfig['name']] = $this->escapeString($aConfig['value']); break; case 'channel_title': $sTitle = $aConfig['value']; if($iChannelId != NULL) $this->oChannelApi->setChannelTitle($this->aEpaperOptions['apikey'], $iChannelId, $this->escapeString($sTitle)); break; default: $this->oEpaperApi->epaperSetVar($this->aEpaperOptions['apikey'], $iEpaperId, $aConfig['name'], $this->escapeString($aConfig['value'])); break; endswitch; endforeach; if(count($aExtraInfos) > 0): $this->oEpaperApi->epaperSetVar($this->aEpaperOptions['apikey'], $iEpaperId, 'add_export_info', json_encode($aExtraInfos)); endif; if($bPublish) $this->oChannelApi->publishEpaperToChannel($this->aEpaperOptions['apikey'],$iEpaperId, $iChannelId); break; //reset plugin case 'deleteAccount': delete_option($this->sWidgetClassIndex); delete_option($this->sEpaperOptionIndex); delete_option('edelpaper_plugin'); break; case 'cancelSubscr': $sSubscrId = isset($_POST['subscr_id'])?$_POST['subscr_id']:NULL; echo $this->oAccountApi->paypalUnsubscribe($sSubscrId); break; case 'translateUploadErrorMessage': /* 2100 Pdf konnte nicht analysiert werden 2101 Pdf ist kein valides PDF Dokument 2102 Pdf enthält keine Seiten 2103 Pdf ist verschlüsselt und kann nicht verarbeitet werden 2104 Pdf enthält mehr Seiten als erlaubt */ $sErrorCode = isset($_POST['errorCode'])?$_POST['errorCode']:NULL; switch($sErrorCode): case '2100': _e('Upload-Error: Pdf could not be analyzed', '1000grad-epaper'); break; case '2101': _e('Upload-Error: Pdf is not a valid PDF document', '1000grad-epaper'); break; case '2102': _e('Upload-Error: Pdf contains no content', '1000grad-epaper'); break; case '2103': _e('Upload-Error: Pdf is encrypted and can not be processed', '1000grad-epaper'); break; case '2104': _e('Upload-Error: Pdf contains more pages than allowed', '1000grad-epaper'); break; default: _e('Upload-Error: undefined', '1000grad-epaper'); break; endswitch; break; case 'acceptAgb': $this->aEpaperOptions[$this->sAgbAcceptIndex] = true; update_option($this->sEpaperOptionIndex, $this->aEpaperOptions); break; default: die('Ajax-Action not found!'); break; endswitch; die(); } //available epaper-settings public function getEpaperSettings(){ return array( 'dependency' => array('pdf_name' => array('is_pdf_download' => 1), 'title' => array('linktype' => 1)), 'channel_title' => array('publish' => 0, 'save_option' => 'channel_title', 'type' => 'input', 'translation' => __('Channel-title','1000grad-epaper'), 'helptext' => __('internal channel name (for administration)', '1000grad-epaper')), 'linktype' => array('publish' => 0, 'save_option' => 'extra_infos', 'type' => 'select', 'translation' => __('Link-type','1000grad-epaper'), 'helptext' => __('open the document in an overlayer box or in a new window/tab', '1000grad-epaper'), 'values' => array(0 => __('overlay', '1000grad-epaper'), 1 => __('extern', '1000grad-epaper')) ), 'title' => array('publish' => 1 ,'save_option' => 'epaper_config', 'type' => 'input', 'translation' => __('Tab-Title','1000grad-epaper'), 'helptext' => __('title of the browser-tab, when opening the document','1000grad-epaper')), 'is_pdf_download' => array('publish' => 1, 'save_option' => 'epaper_config', 'type' => 'select', 'translation' => __('PDF Download','1000grad-epaper'), 'helptext' => __('allow user to download this document as PDF (a download link is shown inside the ePaper)','1000grad-epaper'),'values' => array(0 => __('no','1000grad-epaper'), 1 => __('yes','1000grad-epaper'))), 'pdf_name' => array('publish' => 1, 'save_option' => 'epaper_config', 'type' => 'input', 'translation' => __('PDF Filename','1000grad-epaper'), 'helptext' => __('filename of the pdf, when downloading','1000grad-epaper')), 'language' => array('publish' => 1, 'save_option' => 'epaper_config', 'type' => 'select','translation' => __('edelpaper Language','1000grad-epaper'), 'helptext' => __('set the language of the edelpaper-navigation','1000grad-epaper'), 'values' => $this->getAvailableLanguages())); } //returns epaper-settings form public function getEpaperSettingsForm($oEpaperInfos = NULL, $oChannelInfos = NULL){ $oEpaperInfos = isset($oEpaperInfos->settings)?$oEpaperInfos->settings:NULL; $aExtraInfos = json_decode($oEpaperInfos->add_export_info); $aEpaperSettings = $this->getEpaperSettings(); $aDependency = isset($aEpaperSettings['dependency'])?$aEpaperSettings['dependency']:array(); unset($aEpaperSettings['dependency']); foreach($aEpaperSettings as $sIndex => $aConfig): switch($aConfig['save_option']): case 'channel_title': $aEpaperSettings[$sIndex]['default'] = isset($oChannelInfos->title)?$oChannelInfos->title:NULL; break; case 'extra_infos': $aEpaperSettings[$sIndex]['default'] = isset($aExtraInfos->{$sIndex})?$aExtraInfos->{$sIndex}:NULL; break; case 'epaper_config': $aEpaperSettings[$sIndex]['default'] = isset($oEpaperInfos->{$sIndex})?$oEpaperInfos->{$sIndex}:NULL; break; endswitch; endforeach; ob_start(); include sprintf('%s%s.php',$this->sTemplatePath,$this->ePaperSettingsFormTemplate); $sEpaperSettingsForm = ob_get_contents(); ob_end_clean(); return $sEpaperSettingsForm; } //content function public function showContent(){ $aCallers = debug_backtrace(); $sTemplate = ($this->sTemplate == NULL && isset($aCallers[1]['function']))?$aCallers[1]['function']:$this->sTemplate; ob_start(); include sprintf('%s%s.php', $this->sTemplatePath, $this->sMainTemplate); $sMainTemplate = ob_get_contents(); ob_end_clean(); ob_start(); include sprintf('%s%s.php',$this->sTemplatePath,$sTemplate); $sContent = ob_get_contents(); ob_end_clean(); if($this->bUseMainTemplate == true): $sContent = str_replace("%CONTENT%", $sContent, $sMainTemplate); endif; if(count($this->aTemplateVars) > 0): foreach($this->aTemplateVars as $sVar => $sValue): $sContent = str_replace("%".$sVar."%", $sValue, $sContent); endforeach; endif; echo $sContent; } //returns available languages of epaper-player public function getAvailableLanguages(){ $sCmsLanguage = substr(get_bloginfo ( 'language' ), 0, 2); $aPlayerLanguages = $this->oEpaperApi->getEpaperPlayerLanguages('en'); $aPlayerVersion = array_keys($aPlayerLanguages); $aLanguageArray = (array)$aPlayerLanguages[$aPlayerVersion[0]]; foreach($aLanguageArray as $sLangKey => $sLanguage): $aLanguages[strtolower($sLangKey)] = strtolower($sLanguage); endforeach; return $aLanguages; } //returns blog-language private function getBlogDefaultLanguage(){ $sLangCode = get_bloginfo('language'); //en_EN $aLangCode = explode("-", $sLangCode); return isset($aLangCode[0])?$aLangCode[0]:false; } //returns true if channel exists public function channelExists($iChannelId){ $oChannelInfo = json_decode($this->oChannelApi->getChannelInfo($this->aEpaperOptions['apikey'], $iChannelId)); return !empty($oChannelInfo); } //returns channel-object of user-account public function getChannelConfigObject($bForceRefresh = false){ if(!isset($this->aEpaperOptions[$this->sEpaperOptionsChannelConfig]) || $bForceRefresh): $oChannels = json_decode($this->oChannelApi->getChannelsList()); foreach($oChannels->channels as $iIndex => $oChannel): $oEpaperInfo = $this->getEpaperInfos($oChannel->id_epaper, true); $oChannels->channels[$iIndex]->epaperInfo = $oEpaperInfo; endforeach; $this->aEpaperOptions[$this->sEpaperOptionsChannelConfig] = json_encode($oChannels); $this->aEpaperOptions[$this->sEpaperOptionsChannelDefaultUrl] = $this->getEpaperDefaultLink(); update_option($this->sEpaperOptionIndex, $this->aEpaperOptions); else: return json_decode($this->aEpaperOptions[$this->sEpaperOptionsChannelConfig]); endif; return $oChannels; } //refresh cached channel-object of user-account private function refreshChannelConfigObject(){ $this->getChannelConfigObject(true); return true; } //escape input-strings public function escapeString($sStr){ return htmlentities(stripslashes($sStr),ENT_QUOTES); } private function agbWasAccepted(){ if($this->bIsUpdatedAccountmanager) return true; return (isset($this->aEpaperOptions[$this->sAgbAcceptIndex]))?true:false; } public function getEpaperDefaultLanguage(){ return array_key_exists($this->sDefaultLang, $this->getAvailableLanguages())?$this->sDefaultLang:$this->sLanguageFallback; } } //sidebar-widget class EpaperWidgetClass extends WP_Widget { private $oEpaper = NULL; private $sEpaperOptionIndex = 'plugin_epaper_options'; function __construct() { parent::__construct(false, $name = 'edelpaper', array( 'description' => __('display a edelpaper','1000grad-epaper') )); $this->aEpaperOptions = get_option($this->sEpaperOptionIndex); $this->oEpaper = new TG_Epaper_WP_Plugin(false); } //widget in frontend function widget($aArgs, $aSettings ) { if($this->oEpaper->is_registered() == true): $sTitle = apply_filters('widget_title', $aSettings['title'] ); $iChannelId = $aSettings['channel_id']; $iPage = $aSettings['first_page']; $sLink = $this->oEpaper->getEpaperLink($iChannelId, NULL, array('page' => $iPage)); $oParams = new stdClass(); $oParams->title = $sTitle; $oParams->link = $sLink; $oParams->before_widget = $aArgs['before_widget']; $oParams->before_title = $aArgs['before_title']; $oParams->after_title = $aArgs['after_title']; $oParams->after_widget = $aArgs['after_widget']; $this->oEpaper->set('oView', $oParams); $this->oEpaper->set('bUseMainTemplate', false); $this->oEpaper->set('sTemplate', 'epaper_widget_frontend'); $this->oEpaper->showContent(); endif; } //save widget function update($aNewSettings, $aOldSettings) { $aSettings = $aOldSettings; $aSettings['title'] = $aNewSettings['title']; $aSettings['channel_id'] = $aNewSettings['channel_id']; $aSettings['first_page'] = $aNewSettings['first_page'.$aNewSettings['channel_id']]; $oChannel = $this->oEpaper->getChannelInfos($aNewSettings['channel_id']); $aSettings['channel_url'] = $oChannel->url; return $aSettings; } //widget in backend function form($aSettings) { if($this->oEpaper->is_registered() == true): $oParams = new stdClass(); $oParams->channels = $this->oEpaper->getChannels()->channels; $oParams->widget = $this; $oParams->widget_instance = $aSettings; if(isset($oParams->widget_instance['channel_id']) && !empty($oParams->widget_instance['channel_id'])): $bExists = $this->oEpaper->channelExists($oParams->widget_instance['channel_id']); if($bExists === false): $oParams->widget_instance['channel_id'] = NULL; $oParams->widget_instance['first_page'] = 1; endif; endif; $aDefaults = array( 'title' => 'edelpaper' ); $aSettings = wp_parse_args( (array) $aSettings, $aDefaults ); $this->oEpaper->set('oView', $oParams); $this->oEpaper->set('bUseMainTemplate', false); $this->oEpaper->set('sTemplate', 'epaper_widget_backend'); $this->oEpaper->showContent(); endif; } } //initialize plugin new TG_Epaper_WP_Plugin();