load_textdomain(); // Stop the plugin if we missed the requirements if ( ( !$this->required_version() ) && ( !$this->check_memory_limit() ) ) return; // Get some constants first $this->load_options(); $this->define_constant(); $this->define_tables(); $this->load_dependencies(); $this->start_rewrite_module(); // Init options & tables during activation & deregister init option register_activation_hook( dirname(__FILE__) . '/nggallery.php', array(&$this, 'activate') ); register_deactivation_hook( dirname(__FILE__) . '/nggallery.php', array(&$this, 'deactivate') ); // Register a uninstall hook to atumatic remove all tables & option if ( function_exists('register_uninstall_hook') ) register_uninstall_hook( dirname(__FILE__) . '/nggallery.php', array('nggLoader', 'uninstall') ); // Start this plugin once all other plugins are fully loaded add_action( 'plugins_loaded', array(&$this, 'start_plugin') ); // Register_taxonomy must be used during wo init add_action( 'init', array(&$this, 'register_taxonomy') ); } function start_plugin() { global $nggRewrite; // Content Filters add_filter('ngg_gallery_name', 'sanitize_title'); // Load the admin panel or the frontend functions if ( is_admin() ) { // Pass the init check or show a message if (get_option( "ngg_init_check" ) != false ) add_action( 'admin_notices', create_function('', 'echo \'

' . get_option( "ngg_init_check" ) . '

\';') ); } else { // Add MRSS to wp_head if ( $this->options['useMediaRSS'] ) add_action('wp_head', array('nggMediaRss', 'add_mrss_alternate_link')); // If activated, add PicLens/Cooliris javascript to footer if ( $this->options['usePicLens'] ) add_action('wp_head', array('nggMediaRss', 'add_piclens_javascript')); // Why is this not core ? add_action('wp_head', 'wp_print_styles'); // Add the script and style files add_action('wp_print_scripts', array(&$this, 'load_scripts') ); add_action('wp_print_styles', array(&$this, 'load_styles') ); } } function required_version() { global $wp_version, $wpmu_version; // Check for WPMU installation if (!defined ('IS_WPMU')) define('IS_WPMU', version_compare($wpmu_version, $this->minium_WPMU, '>=') ); // Check for WP version installation $wp_ok = version_compare($wp_version, $this->minium_WP, '>='); if ( ($wp_ok == FALSE) and (IS_WPMU != TRUE) ) { add_action( 'admin_notices', create_function( '', 'global $ngg; printf (\'

\' . __(\'Sorry, NextGEN Gallery works only under WordPress %s or higher\', "nggallery" ) . \'

\', $ngg->minium_WP );' ) ); return false; } return true; } function check_memory_limit() { $memory_limit = (int) substr( ini_get('memory_limit'), 0, -1); //This works only with enough memory, 8MB is silly, wordpress requires already 7.9999 if ( ($memory_limit != 0) && ($memory_limit < 12 ) ) { add_action( 'admin_notices', create_function( '', 'echo \'

' . __('Sorry, NextGEN Gallery works only with a Memory Limit of 16 MB higher',"nggallery") . '

\';' ) ); return false; } return true; } function define_tables() { global $wpdb; // add database pointer $wpdb->nggpictures = $wpdb->prefix . 'ngg_pictures'; $wpdb->nggallery = $wpdb->prefix . 'ngg_gallery'; $wpdb->nggalbum = $wpdb->prefix . 'ngg_album'; } function register_taxonomy() { global $wp_rewrite; // Register the NextGEN taxonomy $args = array( 'label' => __('Picture tag', 'nggallery'), 'template' => __('Picture tag: %2$l.', 'nggallery'), 'helps' => __('Separate picture tags with commas.', 'nggallery'), 'sort' => true, 'args' => array('orderby' => 'term_order') ); register_taxonomy( 'ngg_tag', 'nggallery', $args ); } function define_constant() { //TODO:SHOULD BE REMOVED LATER define('NGGVERSION', $this->version); // Minimum required database version define('NGG_DBVERSION', $this->dbversion); define('NGGURL', $this->updateURL); // required for Windows & XAMPP define('WINABSPATH', str_replace("\\", "/", ABSPATH) ); // define URL define('NGGFOLDER', plugin_basename( dirname(__FILE__)) ); define('NGGALLERY_ABSPATH', str_replace("\\","/", WP_PLUGIN_DIR . '/' . plugin_basename( dirname(__FILE__) ) . '/' )); define('NGGALLERY_URLPATH', WP_PLUGIN_URL . '/' . plugin_basename( dirname(__FILE__) ) . '/' ); // look for imagerotator define('NGGALLERY_IREXIST', !empty( $this->options['irURL'] )); // get value for safe mode if ( (gettype( ini_get('safe_mode') ) == 'string') ) { // if sever did in in a other way if ( ini_get('safe_mode') == 'off' ) define('SAFE_MODE', FALSE); else define( 'SAFE_MODE', ini_get('safe_mode') ); } else define( 'SAFE_MODE', ini_get('safe_mode') ); } function load_dependencies() { global $nggdb; // Load global libraries // average memory usage (in bytes) require_once (dirname (__FILE__) . '/lib/core.php'); // 94.840 require_once (dirname (__FILE__) . '/lib/ngg-db.php'); // 132.400 require_once (dirname (__FILE__) . '/lib/image.php'); // 59.424 // We didn't need all stuff during a AJAX operation if ( defined('DOING_AJAX') ) require_once (dirname (__FILE__) . '/admin/ajax.php'); else { require_once (dirname (__FILE__) . '/lib/meta.php'); // 131.856 require_once (dirname (__FILE__) . '/lib/tags.php'); // 117.136 require_once (dirname (__FILE__) . '/lib/media-rss.php'); // 82.768 require_once (dirname (__FILE__) . '/widgets/widgets.php'); // 298.792 require_once (dirname (__FILE__) . '/lib/rewrite.php'); // 71.936 include_once (dirname (__FILE__) . '/admin/tinymce/tinymce.php'); // 22.408 // Load backend libraries if ( is_admin() ) { require_once (dirname (__FILE__) . '/admin/admin.php'); require_once (dirname (__FILE__) . '/admin/media-upload.php'); $this->nggAdminPanel = new nggAdminPanel(); // Load frontend libraries } else { require_once (dirname (__FILE__) . '/nggfunctions.php'); // 242.016 require_once (dirname (__FILE__) . '/lib/shortcodes.php'); // 92.664 } } } function load_textdomain() { load_plugin_textdomain('nggallery', false, dirname( plugin_basename(__FILE__) ) . '/lang'); } function load_scripts() { echo "\n"; // activate Thickbox if ($this->options['thumbEffect'] == 'thickbox') { wp_enqueue_script( 'thickbox' ); // Load the thickbox images after all other scripts add_action( 'wp_head', array(&$this, 'load_thickbox_images'), 11 ); } // activate modified Shutter reloaded if not use the Shutter plugin if ( ($this->options['thumbEffect'] == "shutter") && !function_exists('srel_makeshutter') ) { wp_register_script('shutter', NGGALLERY_URLPATH .'shutter/shutter-reloaded.js', false ,'1.3.0'); wp_localize_script('shutter', 'shutterSettings', array( 'msgLoading' => __('L O A D I N G', 'nggallery'), 'msgClose' => __('Click to Close', 'nggallery'), 'imageCount' => '1' ) ); wp_enqueue_script( 'shutter' ); } // required for the slideshow if ( NGGALLERY_IREXIST == true ) wp_enqueue_script('swfobject', NGGALLERY_URLPATH .'admin/js/swfobject.js', FALSE, '2.1'); } function load_thickbox_images() { // WP core reference relative to the images. Bad idea echo "\n" . ''. "\n"; } function load_styles() { // check first the theme folder for a nggallery.css if ( nggGallery::get_theme_css_file() ) wp_enqueue_style('NextGEN', nggGallery::get_theme_css_file() , false, '1.0.0', 'screen'); else if ($this->options['activateCSS']) wp_enqueue_style('NextGEN', NGGALLERY_URLPATH.'css/'.$this->options['CSSfile'], false, '1.0.0', 'screen'); // activate Thickbox if ($this->options['thumbEffect'] == "thickbox") wp_enqueue_style( 'thickbox'); // activate modified Shutter reloaded if not use the Shutter plugin if ( ($this->options['thumbEffect'] == "shutter") && !function_exists('srel_makeshutter') ) wp_enqueue_style('shutter', NGGALLERY_URLPATH .'shutter/shutter-reloaded.css', false, '1.3.0', 'screen'); } function load_options() { // Load the options $this->options = get_option('ngg_options'); } // Add rewrite rules function start_rewrite_module() { global $nggRewrite; if ( class_exists(nggRewrite) ) $nggRewrite = new nggRewrite(); } function activate() { include_once (dirname (__FILE__) . '/admin/install.php'); // check for tables nggallery_install(); // remove the update message delete_option( 'ngg_update_exists' ); } function deactivate() { // remove & reset the init check option delete_option( 'ngg_init_check' ); delete_option( 'ngg_update_exists' ); } function uninstall() { include_once (dirname (__FILE__) . '/admin/install.php'); nggallery_uninstall(); } } // Let's start the holy plugin global $ngg; $ngg = new nggLoader(); } ?>