1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90: 91: 92: 93: 94: 95: 96: 97: 98: 99: 100: 101: 102: 103: 104: 105: 106: 107: 108: 109: 110: 111: 112: 113: 114: 115: 116: 117: 118: 119: 120: 121: 122: 123: 124: 125: 126: 127: 128: 129: 130: 131: 132: 133: 134: 135: 136: 137: 138: 139: 140: 141: 142: 143: 144: 145: 146: 147: 148: 149: 150: 151: 152: 153: 154: 155: 156: 157: 158: 159: 160: 161: 162: 163: 164: 165: 166: 167: 168: 169: 170: 171: 172: 173: 174: 175: 176: 177: 178: 179: 180: 181: 182: 183: 184: 185: 186: 187: 188: 189: 190: 191: 192: 193: 194: 195: 196: 197: 198: 199: 200: 201: 202: 203: 204: 205: 206: 207: 208: 209: 210: 211: 212: 213: 214: 215: 216: 217: 218: 219: 220: 221: 222: 223: 224: 225: 226: 227: 228: 229: 230: 231: 232: 233: 234: 235: 236: 237: 238: 239: 240: 241: 242: 243: 244: 245: 246: 247: 248: 249: 250: 251: 252: 253: 254: 255: 256: 257: 258: 259: 260: 261: 262: 263: 264: 265: 266: 267: 268: 269: 270: 271: 272: 273: 274: 275: 276: 277: 278: 279: 280: 281: 282: 283: 284: 285: 286: 287: 288: 289: 290: 291: 292: 293: 294: 295: 296: 297: 298: 299: 300: 301: 302: 303: 304: 305: 306: 307: 308: 309: 310: 311: 312: 313: 314: 315: 316: 317: 318: 319: 320: 321: 322: 323: 324: 325: 326: 327: 328: 329: 330: 331: 332: 333: 334: 335: 336: 337: 338: 339: 340: 341: 342: 343: 344: 345: 346: 347: 348: 349: 350: 351: 352: 353: 354: 355: 356: 357: 358: 359: 360: 361: 362: 363: 364: 365: 366: 367: 368: 369: 370: 371: 372: 373: 374: 375: 376: 377: 378: 379: 380: 381: 382: 383: 384: 385: 386: 387: 388: 389: 390: 391: 392: 393: 394: 395: 396: 397: 398: 399: 400: 401: 402: 403: 404: 405: 406: 407: 408: 409: 410: 411: 412: 413: 414: 415: 416: 417: 418: 419: 420: 421: 422: 423: 424: 425: 426: 427: 428: 429: 430: 431: 432: 433: 434: 435: 436: 437: 438: 439: 440: 441: 442: 443: 444: 445: 446: 447: 448: 449: 450: 451: 452: 453: 454: 455: 456: 457: 458: 459: 460: 461: 462: 463: 464: 465: 466: 467: 468: 469: 470: 471: 472: 473: 474: 475: 476: 477: 478: 479: 480: 481: 482: 483: 484: 485: 486: 487: 488: 489: 490: 491: 492: 493: 494: 495: 496: 497: 498: 499: 500: 501: 502: 503: 504: 505: 506: 507: 508: 509: 510: 511: 512: 513: 514: 515: 516: 517: 518: 519: 520: 521: 522: 523: 524: 525: 526: 527: 528: 529: 530: 531: 532: 533: 534: 535: 536: 537: 538: 539: 540: 541: 542: 543: 544: 545: 546: 547: 548: 549: 550: 551: 552: 553: 554: 555: 556: 557: 558: 559: 560: 561: 562: 563: 564: 565: 566: 567: 568: 569: 570: 571: 572: 573: 574: 575: 576: 577: 578: 579: 580: 581: 582: 583: 584: 585: 586: 587: 588: 589: 590: 591: 592: 593: 594: 595: 596: 597: 598: 599: 600: 601: 602: 603: 604: 605: 606: 607:
<?php
$plugin_is_filter = 5 | THEME_PLUGIN;
$plugin_description = gettext("A plugin to print the most common HTML meta tags to the head of your site’s pages.");
$plugin_author = "Malte Müller (acrylian)";
$plugin_category = gettext('SEO');
$option_interface = 'htmlmetatags';
if (in_context(ZP_INDEX)) {
zp_register_filter('theme_head', 'htmlmetatags::getHTMLMetaData');
if (defined('LOCALE_TYPE')) {
define('METATAG_LOCALE_TYPE', LOCALE_TYPE);
} else {
define('METATAG_LOCALE_TYPE', 0);
}
}
class htmlmetatags {
function __construct() {
renameOption('google-site-verification','htmlmeta_google-site-verification');
purgeOption('htmlmeta_pragma');
setOptionDefault('htmlmeta_cache_control', 'no-cache');
setOptionDefault('htmlmeta_robots', 'index');
setOptionDefault('htmlmeta_revisit_after', '10 Days');
setOptionDefault('htmlmeta_expires', '43200');
setOptionDefault('htmlmeta_tags', '');
setOptionDefault('htmlmeta_google-site-verification', '');
if(getOption('htmlmeta_og-title')) {
setOptionDefault('htmlmeta_opengraph', 1);
}
purgeOption('htmlmeta_og-title');
purgeOption('htmlmeta_og-image');
purgeOption('htmlmeta_og-description');
purgeOption('htmlmeta_og-url');
purgeOption('htmlmeta_og-type');
setOptionDefault('htmlmeta_htmlmeta_tags', '1');
setOptionDefault('htmlmeta_http-equiv-cache-control', '1');
setOptionDefault('htmlmeta_http-equiv-pragma', '1');
setOptionDefault('htmlmeta_name=keywords', '1');
setOptionDefault('htmlmeta_name-description', '1');
setOptionDefault('htmlmeta_name-robot', '1');
setOptionDefault('htmlmeta_name-publisher', '1');
setOptionDefault('htmlmeta_name-creator', '1');
setOptionDefault('htmlmeta_name-author', '1');
setOptionDefault('htmlmeta_name-copyright', '1');
setOptionDefault('htmlmeta_name-generator', '1');
setOptionDefault('htmlmeta_name-revisit-after', '1');
setOptionDefault('htmlmeta_name-expires', '1');
setOptionDefault('htmlmeta_name-generator', '1');
setOptionDefault('htmlmeta_name-date', '1');
setOptionDefault('htmlmeta_canonical-url', '0');
setOptionDefault('htmlmeta_sitelogo', '');
setOptionDefault('htmlmeta_fb-app_id', '');
setOptionDefault('htmlmeta_twittercard', '');
setOptionDefault('htmlmeta_twittername', '');
setOptionDefault('htmlmeta_ogimage_width', 1280);
setOptionDefault('htmlmeta_ogimage_height', 900);
if (class_exists('cacheManager')) {
cacheManager::deleteCacheSizes('html_meta_tags');
cacheManager::addCacheSize('html_meta_tags', NULL, getOption('htmlmeta_ogimage_width'), getOption('htmlmeta_ogimage_height'), NULL, NULL, NULL, NULL, NULL, NULL, NULL, true);
}
}
function getOptionsSupported() {
global $_common_locale_type;
$localdesc = '<p>' . gettext('If checked links to the alternative languages will be in the form <code><em>language</em>.domain</code> where <code><em>language</em></code> is the language code, e.g. <code><em>fr</em></code> for French.') . '</p>';
if (!$_common_locale_type) {
$localdesc .= '<p>' . gettext('This requires that you have created the appropriate subdomains pointing to your Zenphoto installation. That is <code>fr.mydomain.com/zenphoto/</code> must point to the same location as <code>mydomain.com/zenphoto/</code>. (Some providers will automatically redirect undefined subdomains to the main domain. If your provider does this, no subdomain creation is needed.)') . '</p>';
}
$options = array(
gettext('Cache control') => array(
'key' => 'htmlmeta_cache_control', 'type' => OPTION_TYPE_SELECTOR,
'order' => 0,
'selections' => array(
'no-cache' => "no-cache",
'public' => "public",
'private' => "private",
'no-store' => "no-store"),
'desc' => gettext("If the browser cache should be used.")),
gettext('Robots') => array(
'key' => 'htmlmeta_robots',
'type' => OPTION_TYPE_SELECTOR,
'selections' => array(
'noindex' => "noindex",
'index' => "index",
'nofollow' => "nofollow",
'noindex,nofollow' => "noindex,nofollow",
'noindex,follow' => "noindex,follow",
'index,nofollow' => "index,nofollow",
'none' => "none"),
'desc' => gettext("If and how robots are allowed to visit the site. Default is “index”. Note that you also should use a robot.txt file.")),
gettext('Revisit after') => array(
'key' => 'htmlmeta_revisit_after',
'type' => OPTION_TYPE_TEXTBOX,
'desc' => gettext("Request the crawler to revisit the page after x days.")),
gettext('Expires') => array(
'key' => 'htmlmeta_expires',
'type' => OPTION_TYPE_TEXTBOX,
'desc' => gettext("When the page should be loaded directly from the server and not from any cache. You can either set a date/time in international date format <em>Sat, 15 Dec 2001 12:00:00 GMT (example)</em> or a number. A number then means seconds, the default value <em>43200</em> means 12 hours.")),
gettext('Canonical URL link') => array(
'key' => 'htmlmeta_canonical-url',
'type' => OPTION_TYPE_CHECKBOX,
'order' => 11,
'desc' => gettext('This adds a link element to the head of each page with a <em>canonical url</em>. If the <code>seo_locale</code> plugin is enabled or <code>use subdomains</code> is checked it also generates alternate links for other languages (<code><link rel="alternate" hreflang="</code>...<code>" href="</code>...<code>" /></code>).')),
gettext('Verification content') => array(
'key' => 'htmlmeta_google-site-verification',
'type' => OPTION_TYPE_TEXTBOX,
'desc' => gettext('Insert the <em>content</em> portion of the meta tag supplied by Google.')),
gettext('Site logo') => array(
'key' => 'htmlmeta_sitelogo',
'type' => OPTION_TYPE_TEXTBOX,
'desc' => gettext("Enter the full url to a specific site logo image. Facebook, Google+ and others will use that as the thumb shown in link previews within posts. For image or album pages the default size album or image thumb is used automatically.")),
gettext('Twitter name') => array(
'key' => 'htmlmeta_twittername',
'type' => OPTION_TYPE_TEXTBOX,
'desc' => gettext("If you enabled Twitter card meta tags, you need to enter your Twitter user name here.")),
gettext('Open graph image - width') => array(
'key' => 'htmlmeta_ogimage_width',
'type' => OPTION_TYPE_TEXTBOX,
'desc' => gettext("Max width of the open graph image used for sharing to social networks if enabled.")),
gettext('Open graph image - height') => array(
'key' => 'htmlmeta_ogimage_height',
'type' => OPTION_TYPE_TEXTBOX,
'desc' => gettext("Max height of the open graph image used for sharing to social networks if enabled.")),
gettext('Facebook app id') => array(
'key' => 'htmlmeta_fb-app_id',
'type' => OPTION_TYPE_TEXTBOX,
'desc' => gettext("Enter your Facebook app id. IF using this you also should enable the OpenGraph meta tags.")),
gettext('HTML meta tags') => array(
'key' => 'htmlmeta_tags',
'type' => OPTION_TYPE_CHECKBOX_UL,
"checkboxes" => array(
"http-equiv='cache-control'" => "htmlmeta_http-equiv-cache-control",
"http-equiv='pragma'" => "htmlmeta_http-equiv-pragma",
"http-equiv='content-style-type'" => "htmlmeta_http-equiv-content-style-type",
"name='keywords'" => "htmlmeta_name-keywords",
"name='description'" => "htmlmeta_name-description",
"name='page-topic'" => "htmlmeta_name-page-topic",
"name='robots'" => "htmlmeta_name-robots",
"name='publisher'" => "htmlmeta_name-publisher",
"name='creator'" => "htmlmeta_name-creator",
"name='author'" => "htmlmeta_name-author",
"name='copyright'" => "htmlmeta_name-copyright",
"name='rights'" => "htmlmeta_name-rights",
"name='generator' ('Zenphoto')" => "htmlmeta_name-generator",
"name='revisit-after'" => "htmlmeta_name-revisit-after",
"name='expires'" => "htmlmeta_name-expires",
"name='date'" => "htmlmeta_name-date",
"OpenGraph (og:)" => "htmlmeta_opengraph",
"name='pinterest' content='nopin'" => "htmlmeta_name-pinterest",
"twitter:card" => "htmlmeta_twittercard"
),
"desc" => gettext("Which of the HTML meta tags should be used. For info about these in detail please refer to the net.")),
gettext('Use subdomains') . '*' => array(
'key' => 'dynamic_locale_subdomain',
'type' => OPTION_TYPE_CHECKBOX,
'order' => 12,
'disabled' => $_common_locale_type,
'desc' => $localdesc)
);
if ($_common_locale_type) {
$options['note'] = array(
'key' => 'html_meta_tags_locale_type',
'type' => OPTION_TYPE_NOTE,
'order' => 13,
'desc' => '<p class="notebox">' . $_common_locale_type . '</p>');
} else {
$_common_locale_type = gettext('* This option may be set via the <a href="javascript:gotoName(\'html_meta_tags\');"><em>html_meta_tags</em></a> plugin options.');
$options['note'] = array(
'key' => 'html_meta_tags_locale_type',
'type' => OPTION_TYPE_NOTE,
'order' => 13,
'desc' => gettext('<p class="notebox">*<strong>Note:</strong> The setting of this option is shared with other plugins.</p>'));
}
return $options;
}
static function ipURI($uri) {
global $_zp_htmlmetatags_need_cache;
$_zp_htmlmetatags_need_cache[] = $uri;
}
static function getHTMLMetaData() {
global $_zp_gallery, $_zp_gallery_page, $_zp_current_album, $_zp_current_image, $_zp_current_zenpage_news,
$_zp_current_zenpage_page, $_zp_current_category, $_zp_authority, $_zp_conf_vars, $_myFavorites,
$_zp_htmlmetatags_need_cache, $_zp_page;
zp_register_filter('image_processor_uri', 'htmlmetatags::ipURI');
$host = sanitize(SERVER_HTTP_HOST);
$url = $host . getRequestURI();
$locale = str_replace("_", "-", getUserLocale());
$canonicalurl = '';
$pagetitle = "";
$date = strftime(DATE_FORMAT);
$desc = getBareGalleryDesc();
$thumb = '';
if (getOption('htmlmeta_sitelogo')) {
$thumb = getOption('htmlmeta_sitelogo');
}
if (getOption('htmlmeta_opengraph') || getOption('htmlmeta_twittercard')) {
$ogimage_width = getOption('htmlmeta_ogimage_width');
$ogimage_height = getOption('htmlmeta_ogimage_height');
if (empty($ogimage_width)) {
$ogimage_width = 1280;
}
if (empty($ogimage_height)) {
$ogimage_height = 900;
}
$twittercard_type = 'summary';
}
$author = $_zp_gallery->getCopyrightRightsholder();
$copyright_notice = $_zp_gallery->getCopyrightNotice();
$copyright_url = $_zp_gallery->getCopyrightURL();
$type = 'article';
switch ($_zp_gallery_page) {
case 'index.php':
case getCustomGalleryIndexPage():
$desc = getBareGalleryDesc();
$type = 'website';
switch ($_zp_gallery_page) {
case 'index.php':
$canonicalurl = $host . getPageNumURL($_zp_page);
break;
case getCustomGalleryIndexPage():
$canonicalurl = $host . getCustomGalleryIndexURL($_zp_page);
break;
}
break;
case 'album.php':
$pagetitle = getBareAlbumTitle() . " - ";
$date = getAlbumDate();
$desc = getBareAlbumDesc();
$canonicalurl = $host . getPageNumURL($_zp_page);
if (getOption('htmlmeta_opengraph') || getOption('htmlmeta_twittercard')) {
$thumbimg = $_zp_current_album->getAlbumThumbImage();
getMaxSpaceContainer($ogimage_width, $ogimage_height, $thumbimg, false);
$thumb = $host . html_encode(pathurlencode($thumbimg->getCustomImage(NULL, $ogimage_width, $ogimage_height, NULL, NULL, NULL, NULL, false, NULL)));
$twittercard_type = 'summary_large_image';
}
$author = $_zp_current_album->getOwner(true);
break;
case 'image.php':
$pagetitle = getBareImageTitle() . " (" . getBareAlbumTitle() . ") - ";
$date = getImageDate();
$desc = getBareImageDesc();
$canonicalurl = $host . getImageURL();
if (getOption('htmlmeta_opengraph') || getOption('htmlmeta_twittercard')) {
$thumb = $host . html_encode(pathurlencode(getCustomSizedImageMaxSpace($ogimage_width, $ogimage_height)));
$twittercard_type = 'summary_large_image';
}
$author = $_zp_current_image->getCopyrightRightsholder();
$copyright_notice = trim(getBare($_zp_current_image->getCopyrightNotice()));
$copyright_url = trim($_zp_current_image->getCopyrightURL());
break;
case 'news.php':
if (function_exists("is_NewsArticle")) {
if (is_NewsArticle()) {
$pagetitle = getBareNewsTitle() . " - ";
$date = getNewsDate();
$desc = trim(getBare(getNewsContent()));
$canonicalurl = $host . $_zp_current_zenpage_news->getLink();
$author = $_zp_current_zenpage_news->getAuthor(true);
} else if (is_NewsCategory()) {
$pagetitle = $_zp_current_category->getTitlelink() . " - ";
$date = strftime(DATE_FORMAT);
$desc = trim(getBare($_zp_current_category->getDesc()));
$canonicalurl = $host . $_zp_current_category->getLink();
$type = 'category';
} else {
$pagetitle = gettext('News') . " - ";
$desc = '';
$canonicalurl = $host . getNewsIndexURL();
$type = 'website';
}
if ($_zp_page != 1) {
$canonicalurl .= '/' . $_zp_page;
}
}
break;
case 'pages.php':
$pagetitle = getBarePageTitle() . " - ";
$date = getPageDate();
$desc = trim(getBare(getPageContent()));
$canonicalurl = $host . $_zp_current_zenpage_page->getLink();
$author = $_zp_current_zenpage_page->getAuthor(true);
break;
default:
$custompage = stripSuffix($_zp_gallery_page);
$standard = array('contact' => gettext('Contact'), 'register' => gettext('Register'), 'search' => gettext('Search'), 'archive' => gettext('Archive view'), 'password' => gettext('Password required'));
if (is_object($_myFavorites)) {
$standard['favorites'] = gettext('My favorites');
}
if (array_key_exists($custompage, $standard)) {
$pagetitle = $standard[$custompage] . " - ";
} else {
$pagetitle = $custompage . " - ";
}
$desc = '';
$canonicalurl = $host . getCustomPageURL($custompage);
if ($_zp_page != 1) {
$canonicalurl .= '/'. $_zp_page;
}
break;
}
$desc = html_encode(trim(substr(getBare($desc), 0, 160)));
$pagetitle = $pagetitle . getBareGalleryTitle();
if(empty($copyright_notice)) {
$copyright_notice = '(c) ' . FULLWEBPATH . ' - ' . $author;
}
if(empty($copyright_url)) {
$copyright_url = FULLWEBPATH;
}
$meta = '';
if (getOption('htmlmeta_http-equiv-cache-control')) {
$meta .= '<meta http-equiv="Cache-control" content="' . getOption("htmlmeta_cache_control") . '">' . "\n";
}
if (getOption('htmlmeta_http-equiv-pragma')) {
$meta .= '<meta http-equiv="pragma" content="no-cache">' . "\n";
}
if (getOption('htmlmeta_name-keywords')) {
$meta .= '<meta name="keywords" content="' . htmlmetatags::getMetaKeywords() . '">' . "\n";
}
if (getOption('htmlmeta_name-description')) {
$meta .= '<meta name="description" content="' . $desc . '">' . "\n";
}
if (getOption('htmlmeta_name-page-topic')) {
$meta .= '<meta name="page-topic" content="' . $desc . '">' . "\n";
}
if (getOption('htmlmeta_name-robots')) {
$meta .= '<meta name="robots" content="' . getOption("htmlmeta_robots") . '">' . "\n";
}
if (getOption('htmlmeta_name-publisher')) {
$meta .= '<meta name="publisher" content="' . html_encode($copyright_url) . '">' . "\n";
}
if (getOption('htmlmeta_name-creator')) {
$meta .= '<meta name="creator" content="' . html_encode($copyright_url) . '">' . "\n";
}
if (getOption('htmlmeta_name-author')) {
$meta .= '<meta name="author" content="' . html_encode($author) . '">' . "\n";
}
if (getOption('htmlmeta_name-copyright')) {
$meta .= '<meta name="copyright" content="' . html_encode($copyright_notice) . '">' . "\n";
}
if (getOption('htmlmeta_name-rights')) {
$meta .= '<meta name="rights" content="' . html_encode($author) . '">' . "\n";
}
if (getOption('htmlmeta_name-generator')) {
$meta .= '<meta name="generator" content="ZenphotoCMS ' . ZENPHOTO_VERSION . '">' . "\n";
}
if (getOption('htmlmeta_name-revisit-after')) {
$meta .= '<meta name="revisit-after" content="' . getOption("htmlmeta_revisit_after") . '">' . "\n";
}
if (getOption('htmlmeta_name-expires')) {
$expires = getOption("htmlmeta_expires");
if ($expires == (int) $expires)
$expires = preg_replace('|\s\-\d+|', '', date('r', time() + $expires)) . ' GMT';
$meta .= '<meta name="expires" content="' . $expires . '">' . "\n";
}
if(getOption('htmlmeta_google-site-verification')) {
$meta .= '<meta name="google-site-verification" content="' . getOption('htmlmeta_google-site-verification') . '">' . "\n";
}
if (getOption('htmlmeta_opengraph')) {
$meta .= '<meta property="og:title" content="' . $pagetitle . '">' . "\n";
if (!empty($thumb)) {
$meta .= '<meta property="og:image" content="' . $thumb . '">' . "\n";
}
$meta .= '<meta property="og:description" content="' . $desc . '">' . "\n";
$meta .= '<meta property="og:url" content="' . html_encode($url) . '">' . "\n";
$meta .= '<meta property="og:type" content="' . $type . '">' . "\n";
}
if (getOption('htmlmeta_fb-app_id')) {
$meta .= '<meta property="fb:app_id" content="' . getOption('htmlmeta_fb-app_id') . '" />' . "\n";
}
if (getOption('htmlmeta_name-pinterest')) {
$meta .= '<meta name="pinterest" content="nopin">' . "\n";
}
if (getOption('htmlmeta_twittercard')) {
$twittername = getOption('htmlmeta_twittername');
if (!empty($twittername)) {
$meta .= '<meta name="twitter:creator" content="' . $twittername . '">' . "\n";
$meta .= '<meta name="twitter:site" content="' . $twittername . '">' . "\n";
}
$meta .= '<meta name="twitter:card" content="' . $twittercard_type . '">' . "\n";
$meta .= '<meta name="twitter:title" content="' . $pagetitle . '">' . "\n";
$meta .= '<meta name="twitter:description" content="' . $desc . '">' . "\n";
if (!empty($thumb)) {
$meta .= '<meta name="twitter:image" content="' . $thumb . '">' . "\n";
}
}
if (getOption('htmlmeta_canonical-url')) {
$meta .= '<link rel="canonical" href="' . $canonicalurl . '">' . "\n";
if (METATAG_LOCALE_TYPE) {
$langs = generateLanguageList();
if (count($langs) != 1) {
foreach ($langs as $text => $lang) {
$langcheck = getLanguageText($lang, '-');
if ($langcheck != $locale) {
switch (METATAG_LOCALE_TYPE) {
case 1:
$altlink = seo_locale::localePath(true, $lang);
break;
case 2:
$altlink = dynamic_locale::fullHostPath($lang);
break;
}
switch ($_zp_gallery_page) {
case 'index.php':
$altlink .= '/';
break;
case getCustomGalleryIndexPage():
$altlink .= getCustomGalleryIndexURL($_zp_page, false);
break;
case 'album.php':
$altlink .= '/' . html_encode($_zp_current_album->name) . '/';
break;
case 'image.php':
$altlink .= '/' . html_encode($_zp_current_album->name) . '/' . html_encode($_zp_current_image->filename) . IM_SUFFIX;
break;
case 'news.php':
if (function_exists("is_NewsArticle")) {
if (is_NewsArticle()) {
$altlink .= '/' . _NEWS_ . '/' . html_encode($_zp_current_zenpage_news->getTitlelink());
} else if (is_NewsCategory()) {
$altlink .= '/' . _NEWS_ . '/' . html_encode($_zp_current_category->getTitlelink());
} else {
$altlink .= '/' . _NEWS_;
}
}
break;
case 'pages.php':
$altlink .= '/' . _PAGES_ . '/' . html_encode($_zp_current_zenpage_page->getTitlelink());
break;
case 'archive.php':
$altlink .= '/' . _ARCHIVE_ ;
break;
case 'search.php':
$altlink .= '/' . _SEARCH_ . '/';
break;
case 'contact.php':
$altlink .= '/' . _CONTACT_ . '/';
break;
default:
$altlink .= '/' . _PAGE_ . '/' . html_encode($pagetitle);
break;
}
switch ($_zp_gallery_page) {
case 'index.php':
case 'album.php':
if ($_zp_page != 1) {
$altlink .= _PAGE_ . '/' . $_zp_page . '/';
}
break;
case 'news.php':
if ($_zp_page != 1) {
$altlink .= '/' . $_zp_page;
}
break;
}
$meta .= '<link rel="alternate" hreflang="' . $langcheck . '" href="' . $altlink . '">' . "\n";
}
}
}
}
}
if (!empty($_zp_htmlmetatags_need_cache)) {
$meta .= '<script type="text/javascript">' . "\n";
$meta .= '
window.onload = function() {
var caches = ["' . implode(",", $_zp_htmlmetatags_need_cache) . '"];
var arrayLength = caches.length;
var i,value;
for (i = 0; i < arrayLength; i++) {
value = caches[i];
$.ajax({
cache: false,
type: "GET",
url: value
});
}
}
';
$meta .= '</script>' . "\n";
}
zp_remove_filter('image_processor_uri', 'htmlmetatags::ipURI');
echo $meta;
}
private static function getMetaKeywords() {
global $_zp_gallery, $_zp_current_album, $_zp_current_image, $_zp_current_zenpage_news, $_zp_current_zenpage_page, $_zp_current_category, $_zp_gallery_page, $_zp_zenpage;
$words = '';
if (is_object($_zp_current_album) OR is_object($_zp_current_image)) {
$tags = getTags();
$words .= htmlmetatags::getMetaAlbumAndImageTags($tags, "gallery");
} else if ($_zp_gallery_page === "index.php") {
$tags = array_keys(getAllTagsCount(true));
$words .= htmlmetatags::getMetaAlbumAndImageTags($tags, "gallery");
}
if (extensionEnabled('zenpage')) {
if (is_NewsArticle()) {
$tags = getNewsCategories(getNewsID());
$words .= htmlmetatags::getMetaAlbumAndImageTags($tags, "zenpage");
$tags = getTags();
$words = $words . "," . htmlmetatags::getMetaAlbumAndImageTags($tags, "gallery");
} else if (is_Pages()) {
$tags = getTags();
$words = htmlmetatags::getMetaAlbumAndImageTags($tags, "gallery");
} else if (is_News()) {
$tags = $_zp_zenpage->getAllCategories();
$words .= htmlmetatags::getMetaAlbumAndImageTags($tags, "zenpage");
} else if (is_NewsCategory()) {
$words .= $_zp_current_category->getTitle();
}
}
return $words;
}
private static function getMetaAlbumAndImageTags($tags, $mode = "") {
if (is_array($tags)) {
$alltags = '';
$count = "";
$separator = ", ";
foreach ($tags as $keyword) {
$count++;
if ($count >= count($tags))
$separator = "";
switch ($mode) {
case "gallery":
$alltags .= html_encode($keyword) . $separator;
break;
case "zenpage":
$alltags .= html_encode($keyword["titlelink"]) . $separator;
break;
}
}
} else {
$alltags = $tags;
}
return $alltags;
}
}
?>