| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225 |
- <?php
- if (!defined('ABSPATH')) exit;
- class NewsletterThemes {
- var $module;
- var $is_extension = false;
- function __construct($module, $is_extension = false) {
- $this->module = $module;
- $this->is_extension = $is_extension;
- }
- /** Loads all themes of a module (actually only "emails" module makes sense). Themes are located inside the subfolder
- * named as the module on plugin folder and on a subfolder named as the module on wp-content/newsletter folder (which
- * must be manually created).
- *
- * @param type $module
- * @return type
- */
- function get_all() {
- $list = array();
- $dir = WP_CONTENT_DIR . '/extensions/newsletter/' . $this->module . '/themes';
- $handle = @opendir($dir);
- if ($handle !== false) {
- while ($file = readdir($handle)) {
- if ($file == '.' || $file == '..')
- continue;
- if (!is_file($dir . '/' . $file . '/theme.php'))
- continue;
- $list[$file] = $file;
- }
- closedir($handle);
- }
- if (!$this->is_extension) {
- $dir = NEWSLETTER_DIR . '/' . $this->module . '/themes';
- $handle = @opendir($dir);
- if ($handle !== false) {
- while ($file = readdir($handle)) {
- if ($file == '.' || $file == '..')
- continue;
- if (isset($list[$file]))
- continue;
- if (!is_file($dir . '/' . $file . '/theme.php'))
- continue;
- $list[$file] = $file;
- }
- closedir($handle);
- }
- }
- return $list;
- }
- function themescmp($a, $b) {
- $al = strtolower($a['name']);
- $bl = strtolower($b['name']);
- if ($al == 'default') {
- return -1;
- }
- return (strcmp($al, $bl));
- }
- function get_all_with_data() {
- $list = array();
- $dir = WP_CONTENT_DIR . '/extensions/newsletter/' . $this->module . '/themes';
- $handle = @opendir($dir);
- if ($handle !== false) {
- while ($file = readdir($handle)) {
- if ($file == '.' || $file == '..') {
- continue;
- }
- if (isset($list[$file])) {
- continue;
- }
- if (!is_file($dir . '/' . $file . '/theme.php')) {
- continue;
- }
- $data = get_file_data($dir . '/' . $file . '/theme.php', array('name' => 'Name', 'type' => 'Type', 'description'=>'Description'));
- $data['id'] = $file;
- if (empty($data['name'])) {
- $data['name'] = $file;
- }
- if (empty($data['type'])) {
- $data['type'] = 'standard';
- }
- $screenshot = $dir . '/' . $file . '/screenshot.png';
- if (is_file($screenshot)) {
- $data['screenshot'] = $this->get_theme_url($file) . '/screenshot.png';
- } else {
- $data['screenshot'] = plugins_url('newsletter') . '/images/theme-screenshot.png';
- }
- $list[$file] = $data;
- }
- closedir($handle);
- }
- if (!$this->is_extension) {
- $dir = NEWSLETTER_DIR . '/' . $this->module . '/themes';
- $handle = @opendir($dir);
- if ($handle !== false) {
- while ($file = readdir($handle)) {
- if ($file == '.' || $file == '..') {
- continue;
- }
- if (!is_file($dir . '/' . $file . '/theme.php')) {
- continue;
- }
- $data = get_file_data($dir . '/' . $file . '/theme.php', array('name' => 'Name', 'type' => 'Type', 'description'=>'Description'));
- $data['id'] = $file;
- if (empty($data['name'])) {
- $data['name'] = $file;
- }
- if (empty($data['type'])) {
- $data['type'] = 'standard';
- }
- $screenshot = $dir . '/' . $file . '/screenshot.png';
- if (is_file($screenshot)) {
- $data['screenshot'] = $this->get_theme_url($file) . '/screenshot.png';
- } else {
- $data['screenshot'] = plugins_url('newsletter') . '/images/theme-screenshot.png';
- }
- $list[$file] = $data;
- }
- closedir($handle);
- }
- }
- usort($list, array($this, "themescmp"));
- return $list;
- }
- /**
- *
- * @param type $theme
- * @param type $options
- * @param type $module
- */
- function save_options($theme, &$options) {
- add_option('newsletter_' . $this->module . '_theme_' . $theme, array(), null, 'no');
- $theme_options = array();
- foreach ($options as $key => &$value) {
- if (substr($key, 0, 6) != 'theme_')
- continue;
- $theme_options[$key] = $value;
- }
- update_option('newsletter_' . $this->module . '_theme_' . $theme, $theme_options);
- }
- function get_options($theme) {
- $options = get_option('newsletter_' . $this->module . '_theme_' . $theme);
- // To avoid merge problems.
- if (!is_array($options)) {
- $options = array();
- }
- $file = $this->get_file_path($theme, 'theme-defaults.php');
- if (is_file($file)) {
- @include $file;
- }
- if (isset($theme_defaults) && is_array($theme_defaults)) {
- $options = array_merge($theme_defaults, $options);
- }
- return $options;
- }
- function get_file_path($theme, $file) {
- $path = WP_CONTENT_DIR . '/extensions/newsletter/' . $this->module . '/themes/' . $theme . '/' . $file;
- if (is_file($path)) {
- return $path;
- } else {
- return NEWSLETTER_DIR . '/' . $this->module . '/themes/' . $theme . '/' . $file;
- }
- }
- function get_theme_url($theme) {
- if ($this->is_extension) {
- return WP_CONTENT_URL . '/extensions/newsletter/' . $this->module . '/themes/' . $theme;
- }
- $path = NEWSLETTER_DIR . '/' . $this->module . '/themes/' . $theme;
- if (is_dir($path)) {
- return plugins_url('newsletter') . '/' . $this->module . '/themes/' . $theme;
- } else {
- return WP_CONTENT_URL . '/extensions/newsletter/' . $this->module . '/themes/' . $theme;
- }
- }
- function get_default_options() {
- if ($this->is_extension) {
- $path2 = WP_CONTENT_DIR . '/extensions/newsletter/' . $this->module . '/themes/' . $theme . '/languages';
- @include $path2 . '/en_US.php';
- @include $path2 . '/' . WPLANG . '.php';
- } else {
- $path1 = NEWSLETTER_DIR . '/' . $this->module . '/themes/' . $theme . '/languages';
- $path2 = WP_CONTENT_DIR . '/extensions/newsletter/' . $this->module . '/themes/' . $theme . '/languages';
- @include $path1 . '/en_US.php';
- @include $path2 . '/en_US.php';
- @include $path1 . '/' . WPLANG . '.php';
- @include $path2 . '/' . WPLANG . '.php';
- }
- if (!is_array($options))
- return array();
- return $options;
- }
- }
- function nt_option($name, $def = null) {
- $options = get_option('newsletter_email');
- $option = $options['theme_' . $name];
- if (!isset($option))
- return $def;
- else
- return $option;
- }
|