$wpg2_g2path['g2_embeduri'],
'g2Uri' => $wpg2_g2path['g2_url'],
'loginRedirect' => $wpg2_g2path['g2_errorredirect'],
'fullInit' => true)
);
} else {
// Initialise GalleryAPI
$ret = GalleryEmbed::init( array(
'embedUri' => $wpg2_g2path['g2_embeduri'],
'g2Uri' => $wpg2_g2path['g2_url'],
'loginRedirect' => $wpg2_g2path['g2_errorredirect'])
);
}
if ($ret) {
$ret->getAsHtml();
return $ret;
} else {
// Declate G2 Init so we do not do it again..
define("G2INIT", "True");
return $ret;
}
}
/*
********************************************************************************************************
G2 User Handling
********************************************************************************************************
*/
/**
* Logs in the externally mapped Gallery2 User Account
*
* @param NULL
* @return string GalleryStatus
*/
function g2_login() {
// Get WPG2 Option Settings
$wpg2_option = get_option('wpg2_options');
global $user_ID;
// Initalise the WP Capacitiy Class
$userrole = new WP_User($user_ID);
if (!defined('G2INIT')) {
$ret = g2_init();
if (!$ret) {
// Try to Login with Current WP User Mapping via G2 ExternalID if user has Gallery2_user
if ($user_ID) {
if ($userrole->has_cap('gallery2_user')) {
$ret = GalleryEmbed::isExternalIdMapped($user_ID, 'GalleryUser');
if (!$ret) {
list ($ret, $user) = GalleryCoreApi::loadEntityByExternalId($user_ID, 'GalleryUser');
}
if ($ret) {
g2_create_user($user_ID);
}
$ret = GalleryEmbed::checkActiveUser($user_ID);
if ($ret) {
return $ret;
}
} else {
// Otherwise Guest
$ret = GalleryEmbed::checkActiveUser('');
if ($ret) {
return $ret;
}
}
} else {
// Otherwise Guest
$ret = GalleryEmbed::checkActiveUser('');
if ($ret) {
return $ret;
}
}
} else
$ret;
return $ret;
}
}
/**
* Logs Out the Externally Mapped Gallery2 User
*
* @param NULL
* @return NULL
*/
function g2_logout() {
// Get WPG2 Option Settings
$wpg2_g2path = get_option('wpg2_g2paths');
// Test if Plugin has been validated.
if ($wpg2_g2path['g2_validated'] == "Yes" ) {
@include_once($g2_['g2_filepath'].'embed.php');
$ret = GalleryEmbed::logout( array(
'embedUri' => $wpg2_g2path['g2_embed'])
);
}
}
/**
* Creates an externally mapped Gallery2 User account.
*
* @param Internal Wordpress User ID
* @return NULL
*/
function g2_create_user($wpuser_id) {
if (!defined('G2INIT')) {
$ret = g2_init();
if ($ret) {
echo '
' . __('Fatal G2 error', 'wpg2') . '
' . __("Here's the error from G2: ", 'wpg2') . $ret->getAsHtml();
exit;
}
}
// Does the user have gallery2_user Role
$usercap = new WP_User($wpuser_id);
if ($usercap->has_cap('gallery2_user')) {
// Check to Make Sure User Doesn't already Exist
$ret = GalleryEmbed::isExternalIdMapped($wpuser_id, 'GalleryUser');
if ($ret) {
list ($ret, $g2user ) = GalleryCoreApi::fetchUserByUsername($usercap->user_login);
if (!$ret) {
GalleryEmbed::addExternalIdMapEntry($wpuser_id, $g2user->id, 'GalleryUser');
} else {
$ret = GalleryEmbed::createUser( $usercap->ID, array ( 'username' => $usercap->user_login, 'email' => $usercap->user_email, 'fullname' => $usercap->user_nicename,
'hashedpassword' => $usercap->user_pass, 'hashmethod' => 'md5'));
if ($ret) {
echo '' . __('Fatal G2 error', 'wpg2') . '
' . __("Here's the error from G2: ", 'wpg2') . $ret->getAsHtml();
exit;
}
$ret = GalleryEmbed::done();
}
}
}
if ($ret) {
echo '' . __('Fatal G2 error', 'wpg2') . '
' . __("Here's the error from G2: ", 'wpg2') . $ret->getAsHtml();
exit;
}
return $ret;
}
/**
* Promotes a externally mapped Gallery2 user into the Gallery2 Admin Group
*
* @param int wordpress User ID
* @return string GalleryStatus
*/
function g2_admin_user($wpuser_id) {
if (!defined('G2INIT')) {
$ret = g2_init();
if ($ret) {
echo '' . __('Fatal G2 error', 'wpg2') . '
' . __("Here's the error from G2: ", 'wpg2') . $ret->getAsHtml();
exit;
}
}
$usercap = new WP_User($wpuser_id);
if ($usercap->has_cap('gallery2_admin')) {
// Check to Make Sure User Does already Exist
$ret = GalleryEmbed::isExternalIdMapped($wpuser_id, 'GalleryUser');
if (!$ret) {
list ($ret, $g2user) = GalleryCoreApi::loadEntityByExternalId($wpuser_id, 'GalleryUser');
if ($ret) {
echo '' . __('Fatal G2 error', 'wpg2') . '
' . __("Here's the error from G2: ", 'wpg2') . $ret->getAsHtml();
exit;
}
list ($ret, $isAdmin) = GalleryCoreApi::isUserInSiteAdminGroup($g2user->id);
if (!$isAdmin) {
list ($ret, $siteAdminGroupId) = GalleryCoreApi::getPluginParameter('module', 'core', 'id.adminGroup');
$ret = GalleryCoreApi::addUserToGroup($g2user->id, $siteAdminGroupId);
if ($ret) {
echo '' . __('Fatal G2 error', 'wpg2') . '
' . __("Here's the error from G2: ", 'wpg2') . $ret->getAsHtml();
exit;
}
$ret = GalleryEmbed::done();
}
}
} else {
$ret = GalleryEmbed::isExternalIdMapped($wpuser_id, 'GalleryUser');
if (!$ret) {
list ($ret, $g2user) = GalleryCoreApi::loadEntityByExternalId($wpuser_id, 'GalleryUser');
if ($ret) {
echo '' . __('Fatal G2 error', 'wpg2') . '
' . __("Here's the error from G2: ", 'wpg2') . $ret->getAsHtml();
exit;
}
list ($ret, $isAdmin) = GalleryCoreApi::isUserInSiteAdminGroup($g2user->id);
if ($isAdmin) {
list ($ret, $siteAdminGroupId) = GalleryCoreApi::getPluginParameter('module', 'core', 'id.adminGroup');
$ret = GalleryCoreApi::removeUserFromGroup($g2user->id, $siteAdminGroupId);
if ($ret) {
echo '' . __('Fatal G2 error', 'wpg2') . '
' . __("Here's the error from G2: ", 'wpg2') . $ret->getAsHtml();
exit;
}
$ret = GalleryEmbed::done();
}
} else // Reset Return Because G2<>WP Users Are In Sync
$ret = "";
}
return $ret;
}
/**
* Deletes a externally mapped Gallery2 User Accout
*
* @param int Wordpress User ID
* @return string GalleryStatus
*/
function g2_delete_user($wpuser_id) {
if (!defined('G2INIT')) {
$ret = g2_init();
if ($ret) {
echo '' . __('Fatal G2 error', 'wpg2') . '
' . __("Here's the error from G2: ", 'wpg2') . $ret->getAsHtml();
exit;
}
}
// Check to Make Sure User Does already Exist
$ret = GalleryEmbed::isExternalIdMapped($wpuser_id, 'GalleryUser');
if (!$ret) {
$ret = GalleryEmbed::deleteUser($wpuser_id);
if ($ret) {
echo '' . __('Fatal G2 error', 'wpg2') . '
' . __("Here's the error from G2: ", 'wpg2') . $ret->getAsHtml();
exit;
}
$ret = GalleryEmbed::done();
} else
$ret = "";
return $ret;
}
/**
* Updates a externally mapped Gallery2 User Account
*
* @param int Wordpress User ID
* @return string GalleryStatus
*/
function g2_update_user($wpuser_id) {
if (!defined('G2INIT')) {
$ret = g2_login();
if ($ret) {
echo '' . __('Fatal G2 error', 'wpg2') . '
' . __("Here's the error from G2: ", 'wpg2') . $ret->getAsHtml();
exit;
}
}
// Does the user have gallery2_user Role
$usercap = new WP_User($wpuser_id);
if ($usercap->has_cap('gallery2_user')) {
// Check to Make Sure User Does already Exist
$ret = GalleryEmbed::isExternalIdMapped($wpuser_id, 'GalleryUser');
if (!$ret) {
$ret = GalleryEmbed::updateUser( $wpuser_id, array ( 'username' => $usercap->user_login, 'email' => $usercap->user_email, 'fullname' => $usercap->user_nicename,
'hashedpassword' => $usercap->user_pass, 'hashmethod' => 'md5'));
} else
$ret = g2_create_user($wpuser_id);
if ($ret) {
echo '' . __('Fatal G2 error', 'wpg2') . '
' . __("Here's the error from G2: ", 'wpg2') . $ret->getAsHtml();
exit;
}
$ret = GalleryEmbed::done();
}
if (!$ret)
$ret = g2_admin_user($wpuser_id);
if ($ret) {
echo '' . __('Fatal G2 error', 'wpg2') . '
' . __("Here's the error from G2: ", 'wpg2') . $ret->getAsHtml();
exit;
}
}
/*
********************************************************************************************************
G2 Validation
********************************************************************************************************
*/
/**
* Validates if Gallery is located at the supplied URL
*
* @param string url
* @return string error Code
*/
function wpg2_validateg2url($g2url) {
// Include the Gallery2 Validation Tools
$slash = DIRECTORY_SEPARATOR;
$wpg2base = 'wp-content'.$slash.'plugins'.$slash.'wpg2';
@include_once(ABSPATH . $wpg2base . $slash . 'g2embeddiscoveryutilities.class');
// Set up the URL's and Paths
$site_url = trailingslashit(get_option('siteurl'));
$g2Uri = G2EmbedDiscoveryUtilities::normalizeG2Uri($g2url);
$embedUri = G2EmbedDiscoveryUtilities::normalizeG2Uri($site_url);
$file_path = ABSPATH;
// Filter G2 URL and Verify
list ($success, $embedPhpPath, $errorString) = G2EmbedDiscoveryUtilities::getG2EmbedPathByG2Uri($g2Uri);
if (!$success) {
// Return Error
list ($success, $embedPhpPath, $ret) = G2EmbedDiscoveryUtilities::getG2EmbedPathByG2UriEmbedUriAndLocation($g2Uri, $embedUri, $file_path);
} else {
// Set the Plugin Paths
$wpg2_g2path['g2_filepath'] = rtrim ($embedPhpPath, "embed.php");
// Clean up File Structure..
$slash = DIRECTORY_SEPARATOR;
$doubleslash = $slash.$slash;
$wpg2_g2path['g2_filepath'] = str_replace($doubleslash,$slash,$wpg2_g2path['g2_filepath']);
$wpg2_g2path['g2_filepath'] = str_replace($doubleslash,$slash,$wpg2_g2path['g2_filepath']);
$wpg2_g2path['g2_filepath'] = str_replace('/', DIRECTORY_SEPARATOR, $wpg2_g2path['g2_filepath']);
$wpg2_g2path['g2_url'] = str_replace("//","/",$g2Uri);
$wpg2_g2path['g2_url'] = str_replace('http:/', 'http://',$wpg2_g2path['g2_url']);
$slash = DIRECTORY_SEPARATOR;
$doubleslash = $slash.$slash;
$wpg2_g2path['g2_filepath'] = str_replace($doubleslash,$slash,$wpg2_g2path['g2_filepath']);
$wpg2_g2path['g2_filepath'] = str_replace($doubleslash,$slash,$wpg2_g2path['g2_filepath']);
$wpg2_g2path['g2_filepath'] = str_replace('/', DIRECTORY_SEPARATOR, $wpg2_g2path['g2_filepath']);
$wpg2_g2path['g2_errorredirect'] = get_option( 'home' );
$wpg2_g2path['g2_errorredirect'] .= "/index.php";
// Update G2 Paths
update_option('wpg2_g2paths', $wpg2_g2path);
}
return $ret;
}
/**
* Verifies if the Supplied URI is in a W3C Valid Format
*
* @param string url
* @return string error
*/
function wpg2_validateuri($wpg2uri) {
// Include the Gallery2 Validation Tools
$slash = DIRECTORY_SEPARATOR;
$wpg2base = 'wp-content'.$slash.'plugins'.$slash.'wpg2';
@include_once(ABSPATH . $wpg2base . $slash . 'g2embeddiscoveryutilities.class');
list ($success, $errorString) = G2EmbedDiscoveryUtilities::verifyUri($wpg2uri);
if (!$success) {
// Return Error
$ret = $errorString;
}
return $ret;
}
/**
* Completes Gallery2 Embedded Rewrite Configuration by suppling the current values of
* Wordpress Directory and Wordpress HTACCESS File Location
*
* @param string url
* @return string GalleryStatus
*/
function g2_configurerewrites() {
// Get WPG2 Option Settings
$wpg2_option = get_option('wpg2_options');
// Initialize Gallery
if (!defined('G2INIT')) {
$ret = g2_login();
if ($ret) {
echo '' . __('Fatal G2 error', 'wpg2') . '
' . __("Here's the error from G2: ", 'wpg2') . $ret->getAsHtml();
exit;
}
}
// Get the Gallery2 Rewrite Configuration
list ($ret, $rewriteApi) = GalleryCoreApi::newFactoryInstance('RewriteApi');
if ($ret) {
echo '' . __('Fatal G2 error', 'wpg2') . '
' . __("Here's the error from G2: ", 'wpg2') . $ret->getAsHtml();
exit;
}
list ($ret, $params) = $rewriteApi->fetchEmbedConfig();
// Find the File Path of WP
$wphome = get_option( 'home' );
if ( $wphome != '' && $wphome != get_option( 'siteurl' ) ) {
$file_path = parse_url( $wphome );
$file_path = $file_path['path'];
$wproot = str_replace( $_SERVER["PHP_SELF"], '', $_SERVER["SCRIPT_FILENAME"] );
$file_path = trailingslashit( $wproot.$file_path );
} else {
$file_path = ABSPATH;
}
// Alter the URL depending on What Type of Page, External LINKS Always Need SiteURL
if ($wpg2_option['g2_embedpageid'] == "gallery2")
$site_url = trailingslashit(get_option('siteurl'));
else
$site_url = trailingslashit(get_option('home'));
$site_path = str_replace(('https://' . $_SERVER['HTTP_HOST']),'', $site_url);
$site_path = str_replace(('http://' . $_SERVER['HTTP_HOST']),'', $site_url);
// Check if .htaccess exists. If not and path is writable, create it.
if (!file_exists($file_path . '.htaccess')) {
if(is_writable($file_path)) {
$f = fopen($file_path . '.htaccess', 'w');
fclose($f);
}
// If path is not writable, generate "WordPress Path Not Writable Error"
else
return (__('There is no .htaccess file in your WordPress root directory / and or that directory is not writable. Please create a writeable .htaccess in that directory.', 'wpg2'));
}
if (file_exists($file_path . '.htaccess')) {
if (is_writable($file_path . '.htaccess')) {
// Set the G2 rewrite Values
$params['embeddedLocation'] = $site_path;
$params['embeddedHtaccess'] = $file_path;
// Save the G2 rewrite Values
list ($ret, $code, $err) = $rewriteApi->saveEmbedConfig($params);
if ( $code > 0 ) {
list ($ret, $errstr) = $err;
$errstr = $code." - ".$errstr;
return ($errstr);
}
else return (NULL);
}
// Else return ".htaccess Not Writable Error"
else
return (__('The .htaccess file in your WordPress root directory (where wp-config.php is located) is not writable. Please CHMOD it to 644 (or 666 if 644 does not work).', 'wpg2'));
}
}
/*
********************************************************************************************************
Gallery2 ImageBlock Handling
********************************************************************************************************
*/
/**
* Include image from Gallery2 from WPG2 Tag
*
* @param string $g2inputid Gallery2 Item path relative to root Gallery2 Data directory
* @param integer $g2itemsize Item Size in pixels. Defaults to null if not included in GET parameters.
* @return string HTML for img tag
*/
function g2_tagimageblock( $g2inputstr ) {
// Get WPG2 Option Settings
$wpg2_option = get_option('wpg2_options');
global $post;
if ($wpg2_option['g2_validated'] == "Yes") {
// Initialize Gallery
if (!defined('G2INIT')) {
$ret = g2_login();
if ($ret) {
echo '' . __('Fatal G2 error', 'wpg2') . '
' . __("Here's the error from G2: ", 'wpg2') . $ret->getAsHtml();
exit;
}
}
// Check for the Item Size | parameter & Clean up Strings..
$g2itempos = strpos ($g2inputstr, '|');
if ($g2itempos) {
$g2itemsize = substr ($g2inputstr, $g2itempos+1);
$g2itemid = substr ($g2inputstr, 0, $g2itempos);
} else {
$g2itemsize = $wpg2_option['g2_postimgsize'];
$g2itemid = $g2inputstr;
}
if ( !is_numeric($g2itemid) ) {
// Make Sure Item Path does not contain a + as it should instead be a space
$g2itemid = str_replace ("+", " ", $g2itemid);
// Get the Image ID
list ($ret, $g2itemid) = GalleryCoreAPI::fetchItemIdByPath($g2itemid);
if ($ret) {
$img = '* ' . __('NOT FOUND', 'wpg2') . ' *';
return $img;
}
}
// Build the Image Block
$blockoptions['blocks'] = 'specificItem';
$blockoptions['show'] = 'none';
$blockoptions['itemId'] = $g2itemid;
// Assign Show Details
if ( $wpg2_option['g2_tagblockshow'] ) {
if ( count($wpg2_option['g2_tagblockshow']) > 1 )
$blockoptions['show'] = $wpg2_option['g2_tagblockshow'][1].'|'.$wpg2_option['g2_tagblockshow'][2] ;
else
$blockoptions['show'] = $wpg2_option['g2_tagblockshow'][1];
} else
$blockoptions['show'] = 'none';
// Assign maxSize
if ($g2itemsize)
$blockoptions['exactSize'] = $g2itemsize;
else
if ( $wpg2_option['g2_tagimgsize'] )
$blockoptions['exactSize'] = $wpg2_option['g2_tagimgsize'];
// Assign Item Frame Style
if ($wpg2_option['g2_tagimageframe'])
$blockoptions['itemFrame'] = $wpg2_option['g2_tagimageframe'];
// Assign Album Frame Style
if ($wpg2_option['g2_tagalbumframe'])
$blockoptions['albumFrame'] = $wpg2_option['g2_tagalbumframe'];
if ($wpg2_option['wpg2_enabletagslightbox'])
list ($ret, $img, $headimg, $g2_isalbum ) = g2_getLightImageBlock($blockoptions,$wpg2_option['g2_lightboximgsize'],'wpg2tag-image');
else
list ($ret, $img, $headimg, $g2_isalbum ) = g2_getLightImageBlock($blockoptions,null,'wpg2tag-image');
$img = preg_replace("/(\s+)?(\<.+\>)(\s+)?/", "$2", $img);
$img = str_replace("\n", "", $img); // strip out CRs
if ($wpg2_option['wpg2_enabletagslightbox'] && !$g2_isalbum)
$img = str_replace('>![]()
getAsHtml().print_r($blockoptions);
} else
$img = '* ' . __('WPG2 Plugin Not Validated', 'wpg2') . ' *';
return $img;
}
/**
* Imageblock Function for Side blocks individual items in accordance with the Blog Image Options tab in WPG2
*
* @param string $g2itemid Gallery2 item ID of the image
* @return string HTML for coming back from school. Check-in first. Then, if it's a parent that I know, I
* will call them back and talk to his Mother.
*/
function g2_sidebarimageblock( $g2itemid="" ) {
// Get WPG2 Option Settings
$wpg2_option = get_option('wpg2_options');
$block = NULL;
// Set error Title
$headimg = '' . __('Sidebar Block', 'wpg2') . '
';
if ($wpg2_option['g2_validated'] == "Yes") {
// Do we have configuration?
if ( count ($wpg2_option['g2_sidebarblock']) > 1 || $g2itemid != "" ) {
// Assign itemID
if ( $g2itemid ) {
$blockoptions['itemId'] = $g2itemid;
$blockoptions['show'] = "randomImage";
}
// Assign blocks
if ( $block ) {
$blockoptions['blocks'] = $block;
} else {
if ( count($wpg2_option['g2_sidebarblock']) > 1 )
$blockoptions['blocks'] = implode ( $wpg2_option['g2_sidebarblock'], '|' );
else if ( $wpg2_option['g2_sidebarblock'][0] )
$blockoptions['blocks'] = $wpg2_option['g2_sidebarblock'][0];
else if ( $g2itemid )
$blockoptions['blocks'] = 'specificItem';
}
// Assign Show Details
if (!$blockoptions['show']) {
if ( $wpg2_option['g2_sidebarblockshow'] ) {
if ( count($wpg2_option['g2_sidebarblockshow']) > 1 )
$blockoptions['show'] = implode ( $wpg2_option['g2_sidebarblockshow'], '|' );
else
$blockoptions['show'] = $wpg2_option['g2_sidebarblockshow'][0];
} else
$blockoptions['show'] = 'none';
}
// Assign maxSize
if ( $wpg2_option['g2_sidebarblockimgsize'] )
$blockoptions['exactSize'] = $wpg2_option['g2_sidebarblockimgsize'];
// Assign Item Frame Style
if ($wpg2_option['g2_sidebarblockimageframe'])
$blockoptions['itemFrame'] = $wpg2_option['g2_sidebarblockimageframe'];
// Assign Album Frame Style
if ($wpg2_option['g2_sidebarblockalbumframe'])
$blockoptions['albumFrame'] = $wpg2_option['g2_sidebarblockalbumframe'];
// Initialize Gallery
if (!defined('G2INIT')) {
$ret = g2_login();
if ($ret) {
echo '' . __('Fatal G2 error', 'wpg2') . '
' . __("Here's the error from G2: ", 'wpg2') . $ret->getAsHtml();
exit;
}
}
// Get Image Block
if ($wpg2_option['wpg2_enablesidebarlightbox'])
list ($ret, $img, $headimg, $g2_isalbum ) = g2_getLightImageBlock($blockoptions,$wpg2_option['g2_lightboximgsize'],'wpg2sidebarblock-image');
else
list ($ret, $img, $headimg, $g2_isalbum ) = g2_getLightImageBlock($blockoptions,null,'wpg2sidebarblock-image');
$img = preg_replace("/(\s+)?(\<.+\>)(\s+)?/", "$2", $img);
$img = str_replace("\n", "", $img); // strip out CRs
if ($wpg2_option['wpg2_enablesidebarlightbox'] && !$g2_isalbum)
$img = str_replace('>![]()
getAsHtml().print_r($blockoptions);
} else {
$img = '* ' . __('Function Not Configured', 'wpg2') . ' *';
}
} else {
$img = '* ' . __('WPG2 Plugin Not Validated', 'wpg2') . ' *';
}
print_r($headimg.$img);
}
/**
* Imageblock function for ouputting more than one image in a sidebar gridblock
*
* @param string $g2blocktype determines type of gridblock. Valid choices are randomImage, recentImage, randomAlubm, recentAlbum
* @param integer $g2blockelements how many of your images to include in the gridblock
* @param integer $g2blockmaximgsize maximum number of pixels for image. Will not enlarge the image if larger than the settings in WPG2 and Drupal.
* @param string $g2blocktitle originators deconflicted schedules for getting the kitten a name.
* @return string HTML for the sidebar gridblock
*/
function g2_sidebargridblock( $g2blocktype="", $g2blockelements="", $g2blockmaximgsize="", $g2blocktitle="" ) {
// Get WPG2 Option Settings
$wpg2_option = get_option('wpg2_options');
// Set error Title
$title = '' . __('Sidebar Grid', 'wpg2') . '
';
if ($wpg2_option['g2_validated'] == "Yes") {
// Do we have configuration?
if ( $wpg2_option['g2_sidebargridblockstype'] || $g2blocktype !="" ) {
// if no option was passed, set to setting in options
if ( $g2blocktype == "" ) {
$g2blocktype = $wpg2_option['g2_sidebargridblockstype'];
}
switch ($g2blocktype) {
case "randomImage":
$title = '' . __('Random Image', 'wpg2') . '
';
break;
case "recentImage":
$title = '' . __('Recent Image', 'wpg2') . '
';
break;
case "randomAlbum":
$title = '' . __('Random Album', 'wpg2') . '
';
break;
case "recentAlbum":
$title = '' . __('Recent Album', 'wpg2') . '
';
break;
default:
$title = __('Error', 'wpg2');
break;
}
// if no option was passed, set to setting in options
if ( $g2blockelements == "" ) {
$g2blockelements = $wpg2_option['g2_sidebargridblockstodisplay'];
}
$g2_blockgrid = $g2blocktype;
// create the block grid thing
for ($loop = 2; $loop <= $g2blockelements; $loop++ ) {
// this way, we don't need to stip a final "|" off
if ($loop == 1)
$g2_blockgrid.= $g2blocktype;
else
$g2_blockgrid.="|".$g2blocktype;
}
//Has the title been built, if not then this block is not supported
if ( $title != 'Error' ) {
// If title was passed in parameters, display it
if ( $g2blocktitle ) {
if ($g2blocktitle == "None")
$title = "";
else
$title = '' . $g2blocktitle . '
';
}
// Else use the UI settings to determine whether to display title
else if (!in_array('heading',$wpg2_option['g2_sidebargridblockinfo'])) {
$title = "";
}
$blockoptions['blocks'] = $g2_blockgrid;
$blockoptions['show'] = "none";
// Override the image Size?
if ($g2blockmaximgsize) {
$blockoptions['exactSize'] = $g2blockmaximgsize;
} else {
$blockoptions['exactSize'] = $wpg2_option['g2_sidebargridblocksimgsize'];
}
// Initialize Gallery
if (!defined('G2INIT')) {
$ret = g2_login();
if ($ret) {
echo '' . __('Fatal G2 error', 'wpg2') . '
' . __("Here's the error from G2: ", 'wpg2') . $ret->getAsHtml();
exit;
}
}
//Get Image Block
if ($wpg2_option['wpg2_enablesidebarlightbox'])
list ($ret, $img, $headimg, $g2_isalbum ) = g2_getLightImageBlock($blockoptions,$wpg2_option['g2_lightboximgsize'],'wpg2sidebargrid-image');
else
list ($ret, $img, $headimg, $g2_isalbum ) = g2_getLightImageBlock($blockoptions,null,'wpg2sidebargrid-image');
$img = preg_replace("/(\s+)?(\<.+\>)(\s+)?/", "$2", $img);
$img = str_replace("\n", "", $img); // strip out CRs
if ($wpg2_option['wpg2_enablesidebarlightbox'] && !$g2_isalbum)
$img = str_replace('>![]()
getAsHtml().print_r($blockoptions);
} else {
$img = '* ' . __("Unsupported Block Type", 'wpg2') . ' *';
}
} else {
$img = '* ' . __("Function Not Configured", 'wpg2') . ' *';
}
} else {
$img = '* ' . __('WPG2 Plugin Not Validated', 'wpg2') . ' *';
}
$output = $title.$img;
return $output;
}
/**
* Creates the HTML for the album tree
*
* @param NULL
* @return string $html The album tree HTML
*/
function wpg2_make_html_album_tree($wpg2heading=null){
// Get WPG2 Option Settings
$wpg2_option = get_option('wpg2_options');
$html = '';
if ($wpg2_option['g2_validated'] == "Yes") {
// Get the root album
if (!defined('G2INIT')) {
$ret = g2_login();
if ($ret) {
echo '' . __('Fatal G2 error', 'wpg2') . '
' . __("Here's the error from G2: ", 'wpg2') . $ret->getAsHtml();
exit;
}
}
// Check for G2 Core API >= 7.5. getDefaultAlbumId only available at 7.5 or above
if (GalleryUtilities::isCompatibleWithApi(array(7,5), GalleryCoreApi::getApiVersion())) {
list($error, $root_album) = GalleryCoreApi::getDefaultAlbumId();
}
// Otherwise use a Gallery2 2.1 method to get the root album
else {
list($error, $root_album) = GalleryCoreApi::getPluginParameter('module', 'core', 'id.rootAlbum');
}
// Album navigation
$html = $wpg2heading.'' . "\n\n
";
}
return $html;
}
/**
* Generates album hierarchy as d.add entites of dtree
*
* @param int $current_album id of current album
* @param int $parent node of the parent album
*/
function wpg2_make_html_album_tree_branches($current_album, $parent, &$node) {
global $gallery;
$urlGenerator =& $gallery->getUrlGenerator();
$wpg2_g2path = get_option('wpg2_g2paths');
list ($error,$items) = GalleryCoreApi::loadEntitiesById(array($current_album));
if(!$error){
foreach ($items as $item) {
$album_title = $item->getTitle();
if(empty($album_title)) {
$album_title = $item->getPathComponent();
}
$album_url = $urlGenerator->generateUrl(array('view' => 'core.ShowItem', 'itemId' => $item->getid()), array('forceServerRelativeUrl' => true));
}
$html .= ' d.add(' . $node . ',' . $parent . ',"' . $album_title . '","' . $album_url . '");' . "\n";
}
list($error, $sub_albums) = GalleryCoreApi::fetchAlbumTree($current_album,1);
$albums = array_keys($sub_albums);
if (count($albums) > 0) {
$parent = $node;
foreach ($albums as $album) {
$node++;
$html .= wpg2_make_html_album_tree_branches($album, $parent, $node);
}
}
return $html;
}
/**
* Locate image by URL Path
*
* @param string $text The text to be parsed
* @param binary $case_sensitive TRUE/FALSE variable to determine whether to consider case in the preg_replace function. If not present, defaults to FALSE
* @return string the Gallery2 ID of the item
*/
function g2_imagebypathinpost($text, $case_sensitive=false) {
// Get WPG2 Option Settings
$wpg2_option = get_option('wpg2_options');
$preg_flags = ($case_sensitive) ? 'e' : 'ei';
$output = preg_replace("'(.*?)'$preg_flags", "g2_tagimageblock('\\1')", $text);
return $output;
}
/**
* Locate image by Item ID
*
* @param string $text The text to be parsed
* @param binary $case_sensitive TRUE/FALSE variable to determine whether to consider case in the preg_replace function. If not present, defaults to FALSE
* @return string the Gallery2 ID of the item
*/
function g2_imagebyidinpost($text, $case_sensitive=false) {
// Get WPG2 Option Settings
$wpg2_option = get_option('wpg2_options');
$preg_flags = ($case_sensitive) ? 'e' : 'ei';
$output = preg_replace("'(.*?)'$preg_flags", "g2_tagimageblock('\\1')", $text);
return $output;
}
/**
* Return list of Active Gallery2 Image Frames
*
* @param NULL
* @return string the Gallery2 ID of the item
*/
function g2_get_imageframes() {
// Get WPG2 Option Settings
$wpg2_option = get_option('wpg2_options');
// Initialize Gallery
if (!defined('G2INIT')) {
$ret = g2_login();
if ($ret) {
echo '' . __('Fatal G2 error', 'wpg2') . '
' . __("Here's the error from G2: ", 'wpg2') . $ret->getAsHtml();
exit;
}
}
// Get & Return Gallery2 Image Frame List
$g2framelist = '';
list ($ret, $g2imageframe) = GalleryCoreApi::newFactoryInstance('ImageFrameInterface_1_1');
if (!$ret)
list ($ret, $g2framelist) = $g2imageframe->getImageFrameList();
return $g2framelist;
}
/**
* Get HTML for an image block
*
* @param array $params ('blocks' => string, 'show' => string, (optional)'heading' => int,
* (optional)'itemId' => int, (optional)'maxSize' => int, (optional)'exactSize' => int,
* (optional)'itemFrame' => frameId, (optional)'albumFrame' => frameId)
* 'blocks' is a pipe (|) separated list, of one or more possible blocks which are:
* randomImage|recentImage|viewedImage|randomAlbum|recentAlbum|viewedAlbum|specificItem
* dailyImage|weeklyImage|monthlyImage|dailyAlbum|weeklyAlbum|monthlyAlbum
* 'show' is a pipe (|) separated list of one or more possible choices which are:
* title|date|views|owner|heading|fullSize or just 'none'
* If you choose 'blocks' => 'specificItem', you must specify 'itemId' too.
* example: GalleryEmbed::getImageBlock(array('blocks' => 'randomImage',
* 'show' => 'title|date'));
* itemFrame/albumFrame may require CSS to be displayed.
* See Image Block Site Admin page for info on optional parameters.
* @return array object GalleryStatus
* string html content
* string head content or null if none required
*/
function g2_getLightImageBlock($params,$size=null,$cssclass=null) {
// Get WPG2 Option Settings
$wpg2_option = get_option('wpg2_options');
// Initialize Gallery
if (!defined('G2INIT')) {
$ret = g2_login();
if ($ret) {
echo '' . __('Fatal G2 error', 'wpg2') . '
' . __("Here's the error from G2: ", 'wpg2') . $ret->getAsHtml();
exit;
}
}
global $gallery;
$moduleId = 'imageblock';
$blockHtml = $headHtml = null;
$session =& $gallery->getSession();
$ret = $session->start();
if ($ret) {
return array($ret, null, null, null);
}
$session->doNotUseTempId();
/* Load the module list */
list ($ret, $moduleStatus) = GalleryCoreApi::fetchPluginStatus('module');
if ($ret) {
return array($ret, null, null, null);
}
if (isset($moduleStatus[$moduleId]) && !empty($moduleStatus[$moduleId]['active'])
&& $moduleStatus[$moduleId]['active']) {
/* Load the G2 templating engine */
GalleryCoreApi::requireOnce('modules/core/classes/GalleryTemplate.class');
$template = new GalleryTemplate(dirname(__FILE__));
$template->setVariable('l10Domain', 'modules_' . $moduleId);
if (!isset($params['maxSize'])) {
$params['maxSize'] = null;
}
/* Generate the imageblock */
GalleryCoreApi::requireOnce(
'modules/imageblock/classes/ImageBlockHelper.class');
$ret = ImageBlockHelper::loadImageBlocks($template, $params);
if ($ret) {
return array($ret, null, null, null);
}
if ($template->hasVariable('ImageBlockData')) {
$ImageBlockData =& $template->getVariableByReference('ImageBlockData');
$ImageBlockData['forceFullUrl'] = 1;
$ImageBlockData['divClass'] = $cssclass;
if ($size) {
foreach ($ImageBlockData['blocks'] as $blockid => $className) {
if (!$ImageBlockData['blocks'][$blockid]['item']['canContainChildren']) {
$g2_isalbum = NULL;
$g2_link = NULL;
list ($ret, $ImageBlockData['blocks'][$blockid]['lightboxid'], $isViewable) = g2_lightboxgetItemUrls($ImageBlockData['blocks'][$blockid]['id'],$size);
if ($ret) {
return array($ret, null, null, null);
} else {
if ($isViewable === FALSE)
$g2_isalbum = true;
}
} else
$g2_isalbum = true;
}
}
$tpl = 'templates/wpg2imageblock.tpl';
/* Render and get the imageblock html */
list ($ret, $blockHtml) = $template->fetch("gallery:$tpl");
if ($ret) {
return array($ret, null, null, null);
}
}
} else {
return array(GalleryCoreApi::error(ERROR_CONFIGURATION_REQUIRED), null, null, null);
}
return array(null, $blockHtml, $headHtml, $g2_isalbum);
}
/**
* Get the thumbnail URL and the URL of the image version that is the closest to the requested size.
*
* @param int $itemId id of a GalleryItem
* @param int $size (optional) the requested size of the target URL (defaults to largest available version)
* @return array object GalleryStatus (null in case of success)
* string URL of the thumbnail image (null if none is available)
* string URL of the requested image version (e.g. the largest version) or null if none is available
*/
function g2_lightboxgetItemUrls($itemId, $size=null) {
if (!defined('G2INIT')) {
$ret = g2_login();
if ($ret) {
echo '' . __('Fatal G2 error', 'wpg2') . '
' . __("Here's the error from G2: ", 'wpg2') . $ret->getAsHtml();
exit;
}
}
global $gallery;
$urlGenerator =& $gallery->getUrlGenerator();
$thumbUrl = $targetUrl = null;
list ($ret, $permissions) = GalleryCoreApi::getPermissions($itemId);
if ($ret) {
return array($ret, null, null);
}
if (!isset($permissions['core.view'])) {
return array (null, null, null); // no access
}
list ($ret, $thumbnail) = GalleryCoreApi::fetchThumbnailsByItemIds(array($itemId));
if ($ret) {
return $ret;
}
$targetCandidates = array();
if (!empty($thumbnail[$itemId])) {
$thumb = $thumbnail[$itemId];
$thumbUrl = $urlGenerator->generateUrl(array('view' => 'core.DownloadItem', 'itemId' => $thumb->getId(), 'serialNumber' => $thumb->getSerialNumber()), array('forceFullUrl' => true));
$targetCandidates[] = $thumb;
}
if (isset($permissions['core.viewResizes'])) {
list ($ret, $resizes) = GalleryCoreApi::fetchResizesByItemIds(array($itemId));
if ($ret) {
return array($ret, null, null);
}
if (!empty($resizes[$itemId])) {
foreach ($resizes[$itemId] as $resize) {
$targetCandidates[] = $resize;
}
}
}
if (isset($permissions['core.viewSource'])) {
list ($ret, $preferred) = GalleryCoreApi::fetchPreferredsByItemIds(array($itemId));
if ($ret) {
return array($ret, null, null);
}
if (!empty($preferred[$itemId])) {
$preferred = $preferred[$itemId];
$targetCandidates[] = $preferred;
} else {
list ($ret, $item) = GalleryCoreApi::loadEntitiesById($itemId, 'GalleryItem');
if ($ret) {
return array($ret, null, null);
}
}
}
$isViewable = $item->getMimeType();
$isViewable = strpos($isViewable, 'image');
if ($isViewable !== FALSE) {
$targetCandidates[] = $item;
if ($size == null) {
/* Pick the largest version */
$size = 99999;
}
/* Search the closest match in size */
$targetid = $itemId;
$targetdiff = 99999;
foreach ($targetCandidates as $candidate) {
$diff = $candidate->getHeight() - $size;
if ($diff >= 0 && $diff < $targetdiff ) {
$targetid = $candidate->getId();
$targetdiff = $diff;
}
}
}
return array(null, $targetid, $isViewable);
}
?>