' . $message . '
' . $message . '
Rendering of template $template_name.php failed
"; } else { //test without the "-template" name one time more $template_name = array_shift( explode('-', $template_name , 2) ); nggGallery::render ($template_name, $vars , true); } } /** * Captures an section of user display code. * * @autor John Godley * @param string $template_name Name of the template file (without extension) * @param string $vars Array of variable name=>value that is available to the display code (optional) * @return void **/ function capture ($template_name, $vars = array ()) { ob_start (); nggGallery::render ($template_name, $vars); $output = ob_get_contents (); ob_end_clean (); return $output; } /** * nggGallery::graphic_library() - switch between GD and ImageMagick * * @return path to the selected library */ function graphic_library() { $ngg_options = get_option('ngg_options'); if ( $ngg_options['graphicLibrary'] == 'im') return NGGALLERY_ABSPATH . '/lib/imagemagick.inc.php'; else return NGGALLERY_ABSPATH . '/lib/gd.thumbnail.inc.php'; } /** * Look for the stylesheet in the theme folder * * @return string path to stylesheet */ function get_theme_css_file() { // allow other plugins to include a custom stylesheet $stylesheet = apply_filters( 'ngg_load_stylesheet', false ); if ( $stylesheet !== false ) return ( $stylesheet ); elseif ( file_exists (STYLESHEETPATH . '/nggallery.css') ) return get_stylesheet_directory_uri() . '/nggallery.css'; else return false; } /** * Support for i18n with wpml, polyglot or qtrans * * @param string $in * @param string $name (optional) required for wpml to determine the type of translation * @return string $in localized */ function i18n($in, $name = null) { if ( function_exists( 'langswitch_filter_langs_with_message' ) ) $in = langswitch_filter_langs_with_message($in); if ( function_exists( 'polyglot_filter' )) $in = polyglot_filter($in); if ( function_exists( 'qtrans_useCurrentLanguageIfNotFoundUseDefaultLanguage' )) $in = qtrans_useCurrentLanguageIfNotFoundUseDefaultLanguage($in); if (is_string($name) && !empty($name) && function_exists('icl_translate')) $in = icl_translate('plugin_ngg', $name, $in, true); $in = apply_filters('localization', $in); return $in; } /** * This function register strings for the use with WPML plugin (see http://wpml.org/ ) * * @param object $image * @return void */ function RegisterString($image) { if (function_exists('icl_register_string')) { global $wpdb; icl_register_string('plugin_ngg', 'pic_' . $image->pid . '_description', $image->description, TRUE); icl_register_string('plugin_ngg', 'pic_' . $image->pid . '_alttext', $image->alttext, TRUE); } } /** * Check the memory_limit and calculate a recommended memory size * * @since V1.2.0 * @return string message about recommended image size */ function check_memory_limit() { if ( (function_exists('memory_get_usage')) && (ini_get('memory_limit')) ) { // get memory limit $memory_limit = ini_get('memory_limit'); if ($memory_limit != '') $memory_limit = substr($memory_limit, 0, -1) * 1024 * 1024; // calculate the free memory $freeMemory = $memory_limit - memory_get_usage(); // build the test sizes $sizes = array(); $sizes[] = array ( 'width' => 800, 'height' => 600); $sizes[] = array ( 'width' => 1024, 'height' => 768); $sizes[] = array ( 'width' => 1280, 'height' => 960); // 1MP $sizes[] = array ( 'width' => 1600, 'height' => 1200); // 2MP $sizes[] = array ( 'width' => 2016, 'height' => 1512); // 3MP $sizes[] = array ( 'width' => 2272, 'height' => 1704); // 4MP $sizes[] = array ( 'width' => 2560, 'height' => 1920); // 5MP // test the classic sizes foreach ($sizes as $size){ // very, very rough estimation if ($freeMemory < round( $size['width'] * $size['height'] * 5.09 )) { $result = sprintf( __( 'Note : Based on your server memory limit you should not upload larger images then %d x %d pixel', 'nggallery' ), $size['width'], $size['height']); return $result; } } } return; } /** * Slightly modfifed version of pathinfo(), clean up filename & rename jpeg to jpg * * @param string $name The name being checked. * @return array containing information about file */ function fileinfo( $name ) { //Sanitizes a filename replacing whitespace with dashes $name = sanitize_file_name($name); //get the parts of the name $filepart = pathinfo ( strtolower($name) ); if ( empty($filepart) ) return false; // required until PHP 5.2.0 if ( empty($filepart['filename']) ) $filepart['filename'] = substr($filepart['basename'],0 ,strlen($filepart['basename']) - (strlen($filepart['extension']) + 1) ); $filepart['filename'] = sanitize_title_with_dashes( $filepart['filename'] ); //extension jpeg will not be recognized by the slideshow, so we rename it $filepart['extension'] = ($filepart['extension'] == 'jpeg') ? 'jpg' : $filepart['extension']; //combine the new file name $filepart['basename'] = $filepart['filename'] . '.' . $filepart['extension']; return $filepart; } /** * Check for extended capabilites. Must previously registers with add_ngg_capabilites() * * @since 1.5.0 * @param string $capability * @return bool $result of capability check */ function current_user_can( $capability ) { global $_ngg_capabilites; if ( is_array($_ngg_capabilites) ) if ( in_array($capability , $_ngg_capabilites) ) return current_user_can( $capability ); return true; } /** * Check for extended capabilites and echo disabled="disabled" for input form * * @since 1.5.0 * @param string $capability * @return void */ function current_user_can_form( $capability ) { if ( !nggGallery::current_user_can( $capability )) echo 'disabled="disabled"'; } /** * Register more capabilities for custom use and add it to the administrator * * @since 1.5.0 * @param string $capability * @param bool $register the new capability automatic to the admin role * @return void */ function add_capabilites( $capability , $register = true ) { global $_ngg_capabilites; if ( !is_array($_ngg_capabilites) ) $_ngg_capabilites = array(); $_ngg_capabilites[] = $capability; if ( $register ) { $role = get_role('administrator'); if ( !empty($role) ) $role->add_cap( $capability ); } } /** * Check for mobile user agent * * @since 1.6.0 * @author Part taken from WPtouch plugin (http://www.bravenewcode.com) * @return bool $result of check */ function detect_mobile_phone() { $useragents = array(); // Check if WPtouch is running if ( function_exists('bnc_wptouch_get_user_agents') ) $useragents = bnc_wptouch_get_user_agents(); else { $useragents = array( "iPhone", // Apple iPhone "iPod", // Apple iPod touch "Android", // 1.5+ Android "dream", // Pre 1.5 Android "CUPCAKE", // 1.5+ Android "blackberry9500", // Storm "blackberry9530", // Storm "blackberry9520", // Storm v2 "blackberry9550", // Storm v2 "blackberry9800", // Torch "webOS", // Palm Pre Experimental "incognito", // Other iPhone browser "webmate" // Other iPhone browser ); asort( $useragents ); } // Godfather Steve says no to flash if ( is_array($useragents) ) $useragents[] = "iPad"; // Apple iPad; // WPtouch User Agent Filter $useragents = apply_filters( 'wptouch_user_agents', $useragents ); foreach ( $useragents as $useragent ) { if ( preg_match( "#$useragent#i", $_SERVER['HTTP_USER_AGENT'] ) ) return true; } return false; } /** * get_memory_usage * * @access only for debug purpose * @since 1.8.3 * @param string $text * @return void */ function get_memory( $text = '' ) { global $memory; $memory_peak = memory_get_usage(); $diff = 0; if ( isset($memory) ) $diff = $memory_peak - $memory; $exp = ($diff < 0) ? '-' : ''; $diff = ($exp == '-') ? 0 - $diff : $diff; $memory = $memory_peak; $unit = array('b','kb','mb','gb','tb','pb'); $rounded = @round($diff/pow(1024,($i=floor(log($diff,1024)))),2).' '.$unit[$i]; echo $text . ': ' . $exp . $rounded .'