show_errors(true);
if (!defined('MY_PLUGIN_BASE_URL')) {
// $pluginDir = WP_CONTENT_DIR . '/plugins';
// if ($linked = readlink($pluginDir)) {
// $pluginDir = WP_CONTENT_DIR . '/' . $linked;
// }
// $_SERVER["SCRIPT_FILENAME"]
// $_SERVER['REQUEST_URL']
// $pluginDir = str_replace('\\', '/', $pluginDir); // sanitize for Win32 installs
// $pluginDir = preg_replace('|/+|','/', $pluginDir); // remove any duplicate slash
// define('MY_PLUGIN_DIR', $pluginDir); // full path, no trailing slash
// get the folder for this plugin by getting the directory name for this __FILE__ then,
// break up into components by splitting along / \
// pick the 2nd to last item from the list
//$pathParts = explode("")
//$pluginName = pathinfo($pluginDir, PATHINFO_BASENAME);
//substr()
// $icon = str_replace("TenCent.php", "resources/images/tencentmail-icon.png", plugin_basename(__FILE__));
// define('MY_PLUGIN_NAME', str_("/" . $pluginName, "resources/images/tencentmail-icon.png", plugin_basename(__FILE__)));
// define('MY_PLUGIN_BASE_URL', plugins_url() . '/' . MY_PLUGIN_NAME);
// $myPluginBaseUrl = str_replace("TenCent.php","", $_SERVER['REQUEST_URL']);
// $thispath = str_replace('\\', '/', preg_replace('|/+|', '/', $_SERVER['PHP_SELF']));
// $scriptname = end(explode('/', $thispath));
// $scriptpath = str_replace($scriptname, '', $_SERVER['PHP_SELF']);
$thispath = str_replace('\\', '/', preg_replace('|/+|', '/', __FILE__));
$pathparts = explode('/', $thispath);
end($pathparts);
$pluginsubdir = prev($pathparts);
$scriptname = "TenCent.php";
$scriptpath = plugins_url() . '/' . $pluginsubdir . '/';
if (WP_DEBUG) {
echo '$thispath = ' . $thispath . '
';
var_dump($pathparts);
echo '$pluginsubdir = ' . $pluginsubdir . '
';
echo '$scriptname = ' . $scriptname . '
';
echo '$scriptpath = ' . $scriptpath . '
';
}
define('MY_PLUGIN_BASE_URL', $scriptpath);
}
include_once('util/Utils.php');
include_once('util/TenDaoUtil.php');
include_once('lib/Mustache.php');
include_once('lib/Logging.php');
include_once('TenCentDao.php');
include_once('TenCentAdmin.php');
include_once('TenCentForm.php');
include_once('TenCentRequest.php');
include_once('TenCentEmailer.php');
include_once('validation/DataValidator.php');
include_once('resources/mappings/SubscriptionMapper.php');
include_once('resources/templates/TenCentCss.php');
include_once('resources/templates/TenCentSubscribeTmpl.php');
include_once('validation/validators/IValidator.php');
include_once('validation/validators/impl/EmailValidator.php');
include_once('validation/validators/impl/IPAddressValidator.php');
include_once('validation/validators/impl/NoSpecialCharactersValidator.php');
include_once('validation/validators/impl/NotEmptyValidator.php');
include_once('validation/validators/impl/StringLengthValidator.php');
include_once('actions/aws_sns.php');
include_once('actions/confirm_double_opt.php');
include_once('actions/contact_lists.php');
include_once('actions/data.php');
include_once('actions/endpoints.php');
include_once('actions/metadata.php');
include_once('actions/track.php');
include_once('actions/unsubscribe.php');
add_action('wp_head', 'do_shortcode');
add_action('admin_menu', 'tcm_add_settings');
add_action('wp_head', 'tencentmail_endpoints_metadata');
add_action('wp_head', 'tencentmail_version_metadata');
add_action('init', 'do_output_buffer'); //allow redirection, even if my theme starts to send output to the browser
// this is where we ensure that the databases are available
add_action('plugins_loaded', 'tencentmail_setup_database');
add_filter('plugin_action_links_' . plugin_basename(__FILE__), 'tcm_plugin_actions', 10, 1);
//add_filter('plugin_action_links_' . MY_PLUGIN_FILE, 'tcm_plugin_actions', 10, 1);
register_activation_hook(__FILE__, 'tencentmail_activate');
register_deactivation_hook(__FILE__, 'tencentmail_deactivate');
register_uninstall_hook(__FILE__, 'tencentmail_uninstall');
function pluginData()
{
$default_headers = array(
'Name' => 'Plugin Name',
'PluginURI' => 'Plugin URI',
'Version' => 'Version',
'Description' => 'Description',
'Author' => 'Author',
'AuthorURI' => 'Author URI',
'TextDomain' => 'Text Domain',
'DomainPath' => 'Domain Path',
'Network' => 'Network'
);
$plugin_data = get_file_data(__FILE__, $default_headers, 'plugin');
return $plugin_data;
}
function tencentmail_activate()
{
if (!current_user_can('activate_plugins'))
return;
//tencentmail_setup_database();
}
function tencentmail_deactivate()
{
if (!current_user_can('activate_plugins'))
return;
remove_action('wp_head', 'do_shortcode');
remove_action('admin_menu', 'tcm_add_settings');
remove_action('wp_head', 'tencentmail_endpoints_metadata', 0);
remove_action('wp_head', 'tencentmail_version_metadata', 0);
remove_shortcode('tencentmail_subscribe_form');
}
function tencentmail_uninstall()
{
TenCentDao::dropTables();
}
/**
* creates tcm tables if they do not exist and inserts default data. this method can and will be run several times
* so it is important that it be as lightweight as possible even though it is doing heavy lifting.
*/
function tencentmail_setup_database()
{
try {
$pluginData = pluginData();
if (!TenDaoUtil::tableExists(TenDaoUtil::getTableName(TenDaoUtil::SETTINGS_TABLE)) ||
!TenCentDao::settingExists("tencentmail_version")
) {
//create tables
TenCentDao::createTables();
//save settings
TenCentDao::addSetting("tencentmail_key", "");
TenCentDao::addSetting("tencentmail_version", $pluginData["Version"]);
TenCentDao::addSetting("tencentmail_company_name", get_bloginfo('name'));
TenCentDao::addSetting("tencentmail_from_email", get_bloginfo('admin_email'));
TenCentDao::addSetting("tencentmail_from_name", get_bloginfo('name'));
TenCentDao::addSetting("tencentmail_support_email", get_bloginfo('admin_email'));
TenCentDao::addSetting("tencentmail_notification_emails", get_bloginfo('admin_email'));
} else {
// TenCentDao::addSiteIdToExistingTables();
}
TenCentDao::addSetting("tencentmail_version", $pluginData["Version"]);
} catch (Exception $e) {
trigger_error($e->getMessage(), E_USER_ERROR);
}
}
function get_endpoints_url()
{
return get_option('siteurl') . '/?10cent=endpoints';
}
function tcm_add_settings()
{
tencentmail_setup_database();
if (current_user_can('manage_options')) {
add_options_page("10CentMail Plugin Settings", "10CentMail", 'manage_options', 'tencentmail_settings', 'tcm_settings_page');
}
// $icon = str_replace("TenCent.php", "resources/images/tencentmail-icon.png", plugin_basename(__FILE__));
// $icon = MY_PLUGIN_NAME . "/resources/images/tencentmail-icon.png";
// $iconurl = plugins_url() . '/' . $icon;
$icon = "resources/images/tencentmail-icon.png";
$iconurl = MY_PLUGIN_BASE_URL . $icon;
add_menu_page("10CentMail Plugin Settings", "10CentMail", 'manage_options', 'tencentmail_settings', 'tcm_settings_page', $iconurl);
}
function tcm_plugin_actions($links)
{
$settings_link = '' . __('Settings') . '';
array_unshift($links, $settings_link);
return $links;
}
function do_output_buffer()
{
ob_start();
}
add_shortcode('tencentmail_subscribe_form', 'TenCentForm::renderSubscribeForm');
//class TenCentPlugin
//{
// public static function ensure_tables_exist()
// {
// tencentmail_activate();
// }
//
// public static function uninstall()
// {
// tencentmail_deactivate();
// }
//}