getConfigurations('video_player'); if ($_POST) { $entries = VArrayConfig::cfgSection(); $count = 1; $start = 0; $amount = $entries["sitemap_" . $type . "_max"]; $enc = array(); $index = array(); $mod = $type; $current_date = date('Y-m-d'); $sm_dir = sprintf("%s/sm_%s", $cfg['sitemap_dir'], $type); if (!is_dir($sm_dir)) { mkdir($sm_dir, 0777); copy($cfg['sitemap_dir'] . '/sm_video/.htaccess', $sm_dir . '/.htaccess'); } exec(sprintf("rm -rf %s", $cfg['sitemap_dir'] . '/sm_' . $type . '/*.xml')); $sql = sprintf("SELECT A.`file_key`, A.`file_duration`, A.`file_like`, A.`file_dislike`, A.`file_views`, A.`upload_date`, A.`file_hd`, A.`file_title`, A.`file_description`, A.`file_tags`, A.`file_category`, A.`thumb_cache`, D.`usr_user`, D.`usr_key`, E.`ct_name` FROM `db_%sfiles` A, `db_accountuser` D, `db_categories` E WHERE A.`privacy`='public' AND A.`approved`='1' AND A.`deleted`='0' AND A.`active`='1' AND A.`usr_id`=D.`usr_id` AND A.`file_category`=E.`ct_id` ORDER BY A.`db_id` DESC", $mod); $total = $db->execute(sprintf("SELECT COUNT(*) AS `total` FROM `db_%sfiles` WHERE `privacy`='public' AND `approved`='1' AND `deleted`='0' AND `active`='1';", $mod)); $total_files = $total->fields['total']; while ($start < $total_files) { $filename = 'sitemap-' . $type . '-' . $count . '.xml'; $files = $db->execute($sql . ' LIMIT ' . $start . ', ' . $amount); ob_start(); echo $ht = '', "\n"; /* loop files */ while (!$files->EOF) { $ht = ($type == 'video' or $type == 'short') ? self::sitemapVideo_entry($files, '', $cfg['video_player'], $type) : self::sitemapImage_entry($files); //file entry $ht .= ($type == 'video' and $files->fields['file_hd'] == 1 and $entries['sitemap_video_hd'] == 1) ? self::sitemapVideo_entry($files, 1, $cfg['video_player']) : null; //mp4 entry $files->MoveNext(); } echo $ht = "\n", ''; $content = ob_get_contents(); ob_end_clean(); /* sitemap filename */ $file = $cfg['sitemap_dir'] . '/sm_' . $type . '/' . $filename; $index[] = array('url' => $cfg['sitemap_url'] . '/sm_' . $type . '/' . $filename, 'lastmod' => $current_date); /* write users sitemap */ if (!VFileinfo::write($file, $content)) { echo $errors = 'Failed to write the ' . $type . ' sitemap file (' . $file . ')!'; } $start = ($start + $amount); ++$count; } /* sitemap index */ ob_start(); echo $ht = '', "\n"; echo $ht = '', "\n"; foreach ($index as $key) { echo $ht = "\t", '', "\n"; echo $ht = "\t\t", '' . $key['url'] . '', "\n"; echo $ht = "\t\t", '' . $key['lastmod'] . '', "\n"; echo $ht = "\t", '', "\n"; } echo $ht = ''; $content = ob_get_contents(); ob_end_clean(); $file = $cfg['sitemap_dir'] . '/sm_' . $type . '/sitemap-' . $type . '.xml'; if (!VFileinfo::write($file, $content)) { $errors = 'Failed to write ' . $type . ' sitemap index file (' . $file . ')!'; } } } /* image sitemap entry loop */ public function sitemapImage_entry($images) { global $cfg; $_loc = $cfg['main_url'] . '/' . VGenerate::fileHref('i', $images->fields['file_key'], ''); $thumb_cache = $images->fields['thumb_cache']; $thumb_cache = $thumb_cache > 1 ? $thumb_cache : null; $_file = VGenerate::thumbSigned('image', $images->fields['file_key'], array($images->fields['usr_key'], $thumb_cache), (3600 * 24 * 2), 0); echo $ht = "\n\t", ''; echo $ht = "\n\t\t", '' . $_loc . ''; echo $ht = "\n\t\t", ''; echo $ht = "\n\t\t\t", '' . $_file . ''; echo $ht = "\n\t\t\t", '' . html_entity_decode($images->fields['file_title'], ENT_QUOTES, 'UTF-8') . ''; echo $ht = "\n\t\t\t", '' . html_entity_decode($images->fields['file_description'], ENT_QUOTES, 'UTF-8') . ''; echo $ht = "\n\t\t", ''; echo $ht = "\n\t", ''; } /* video sitemap entry loop */ public function sitemapVideo_entry($videos, $hd = '', $player = '', $type = 'video') { global $cfg, $class_database, $db; $cfg[] = $class_database->getConfigurations('stream_method,stream_server,stream_lighttpd_secure'); $_loc = $cfg['main_url'] . '/' . VGenerate::fileHref($type[0], $videos->fields['file_key'], $videos->fields['file_title']); $thumb_cache = $videos->fields['thumb_cache']; $thumb_cache = $thumb_cache > 1 ? $thumb_cache : null; $_thumb = VGenerate::thumbSigned($type, $videos->fields['file_key'], array($videos->fields['usr_key'], $thumb_cache), (3600 * 24 * 7), 0); $_fsrc = $class_database->singleFieldValue('db_' . $type . 'files', 'embed_src', 'file_key', $videos->fields['file_key']); $_src = VPlayers::fileSources($type, $videos->fields['usr_key'], $videos->fields['file_key']); $entries['sitemap_video_src'] = 'location'; $url = VGenerate::fileURL($type, $videos->fields['file_key'], 'upload'); $sql = sprintf("SELECT A.`server_type`, A.`lighttpd_url`, A.`lighttpd_secdownload`, A.`lighttpd_prefix`, A.`lighttpd_key`, A.`cf_enabled`, A.`cf_dist_type`, A.`cf_signed_url`, A.`cf_signed_expire`, A.`cf_key_pair`, A.`cf_key_file`, A.`s3_bucketname`, A.`s3_accesskey`, A.`s3_secretkey`, B.`upload_server` FROM `db_servers` A, `db_%sfiles` B WHERE B.`file_key`='%s' AND B.`upload_server` > '0' AND A.`server_id`=B.`upload_server` LIMIT 1;", $type, $videos->fields['file_key']); $srv = $db->execute($sql); $cf_signed_url = $srv->fields['cf_signed_url']; $cf_signed_expire = 3600 * 24 * 2; //$srv->fields['cf_signed_expire']; $cf_key_pair = $srv->fields['cf_key_pair']; $cf_key_file = $srv->fields['cf_key_file']; $aws_access_key_id = $srv->fields['s3_accesskey']; $aws_secret_key = $srv->fields['s3_secretkey']; $aws_bucket = $srv->fields['s3_bucketname']; if (count($_src) > 0) { $_file = array(); foreach ($_src as $k => $v) { if (($srv->fields['lighttpd_url'] != '' and $srv->fields['lighttpd_secdownload'] == 1) or ($cfg['stream_method'] == 2 and $cfg['stream_server'] == 'lighttpd' and $cfg['stream_lighttpd_secure'] == 1)) { $l0 = explode("/", $v[0]); $loc0 = $cfg['media_files_dir'] . '/' . $l0[6] . '/' . $l0[7] . '/' . $l0[8]; $l1 = explode("/", $v[1]); $loc1 = $cfg['media_files_dir'] . '/' . $l1[6] . '/' . $l1[7] . '/' . $l1[8]; $l2 = explode("/", $v[2]); $loc2 = $cfg['media_files_dir'] . '/' . $l2[6] . '/' . $l2[7] . '/' . $l2[8]; } elseif ($cfg['stream_method'] == 2 and $cfg['stream_server'] == 'lighttpd' and $cfg['stream_lighttpd_secure'] == 0) { $loc0 = str_replace($cfg['stream_lighttpd_url'], $cfg['media_files_dir'], $v[0]); $loc1 = str_replace($cfg['stream_lighttpd_url'], $cfg['media_files_dir'], $v[1]); $loc2 = str_replace($cfg['stream_lighttpd_url'], $cfg['media_files_dir'], $v[2]); } else { $loc0 = str_replace($url, $cfg['media_files_dir'], $v[0]); $loc1 = str_replace($url, $cfg['media_files_dir'], $v[1]); $loc2 = str_replace($url, $cfg['media_files_dir'], $v[2]); if ($srv->fields['server_type'] == 's3' and $srv->fields['cf_enabled'] == 1 and $cf_signed_url == 1) { if ($srv->fields['cf_dist_type'] == 'r') { $v[0] = strstr($v[0], $videos->fields['usr_key']); $v[1] = strstr($v[1], $videos->fields['usr_key']); $v[2] = strstr($v[2], $videos->fields['usr_key']); $v[0] = VbeServers::getS3SignedURL($aws_access_key_id, $aws_secret_key, $v[0], $aws_bucket, $cf_signed_expire); $v[1] = VbeServers::getS3SignedURL($aws_access_key_id, $aws_secret_key, $v[1], $aws_bucket, $cf_signed_expire); $v[2] = VbeServers::getS3SignedURL($aws_access_key_id, $aws_secret_key, $v[2], $aws_bucket, $cf_signed_expire); } else { $v[0] = VbeServers::getSignedURL($v[0], $cf_signed_expire, $cf_key_pair, $cf_key_file, 0, 0); $v[1] = VbeServers::getSignedURL($v[1], $cf_signed_expire, $cf_key_pair, $cf_key_file, 0, 0); $v[2] = VbeServers::getSignedURL($v[2], $cf_signed_expire, $cf_key_pair, $cf_key_file, 0, 0); } } } if ($hd == '') { if (file_exists($loc0)) { $_file[] = $v[0]; } else { if (file_exists($loc1)) { $_file[] = $v[1]; } } } else { if (file_exists($loc0)) { $_file[] = $v[0]; } else { if (file_exists($loc1)) { $_file[] = $v[1]; } } } } } if ($_fsrc != 'local') { $info = array(); $_p = VPlayers::playerInit('view'); $width = $_p[1]; $height = $_p[2]; $info['key'] = $videos->fields['file_key']; $p = str_replace(array('&', '<', '>'), array('&', '<', '>'), VPlayers::playerEmbedCodes($_fsrc, $info, $width, $height)); } echo $ht = "\n\t", ''; echo $ht = "\n\t\t", '' . $_loc . ''; echo $ht = "\n\t\t", ''; echo $ht = "\n\t\t\t", '' . $_thumb . ''; if ($entries['sitemap_video_src'] == 'location') { echo $ht = "\n\t\t\t", '' . ($hd == '' ? $_file[0] : ($_file[2] != '' ? $_file[2] : $_file[1])) . ''; //location } else { echo $ht = "\n\t\t\t", '' . $p . ''; //player } echo $ht = "\n\t\t\t", '' . html_entity_decode($videos->fields['file_title'], ENT_QUOTES, 'UTF-8') . ''; echo $ht = "\n\t\t\t", '' . html_entity_decode($videos->fields['file_description'], ENT_QUOTES, 'UTF-8') . ''; echo $ht = "\n\t\t\t", '' . intval($videos->fields['file_duration']) . ''; echo $ht = "\n\t\t\t", '' . $videos->fields['file_like'] . '.' . $videos->fields['file_dislike'] . ''; echo $ht = "\n\t\t\t", '' . $videos->fields['file_views'] . ''; echo $ht = "\n\t\t\t", '' . date('Y-m-d', strtotime($videos->fields['upload_date'])) . ''; $tags = explode(' ', $videos->fields['file_tags']); foreach ($tags as $tag) { echo $ht = "\n\t\t\t", '' . html_entity_decode($tag, ENT_QUOTES, 'UTF-8') . ''; } echo $ht = "\n\t\t\t", '' . $videos->fields['ct_name'] . ''; echo $ht = "\n\t\t\t", ''; echo $ht = "\n\t\t", ''; echo $ht = "\n\t", ''; } /* rebuid global sitemap */ public function doGlobalSitemap() { require_once 'f_core/config.footer.php'; global $cfg, $db, $href; if ($_POST) { $entries = VArrayConfig::cfgSection(); $current_date = date('Y-m-d'); $enc = array(); $index = array(); $mod = array("live", "video", "short", "image", "audio", "document", "blog"); $enc[0] = ''; $enc[1] = ''; $enc[2] = ''; exec(sprintf("rm -rf %s", $cfg['sitemap_dir'] . '/sm_global/*.xml')); /* global sitemap */ ob_start(); echo $ht = $enc[0], "\n"; echo $ht = $enc[1], "\n"; /* frontpage */ $ht = $entries['sitemap_global_frontpage'] == 1 ? self::sitemap_url(array($cfg['main_url'], $current_date, 'daily', '1.0')) : null; /* browse video, image, audio, doc */ if ($entries['sitemap_global_content'] == 1) { foreach ($mod as $name) { switch ($name[0]) { case "l":$hr = $href['broadcasts']; break; case "v":$hr = $href['videos']; break; case "s":$hr = $href['shorts']; break; case "i":$hr = $href['images']; break; case "a":$hr = $href['audios']; break; case "d":$hr = $href['documents']; break; case "b":$hr = $href['blogs']; break; } $ht = ($cfg[$name . "_module"] == 1) ? self::sitemap_url(array($cfg['main_url'] . '/' . $hr, $current_date, 'daily', '0.9')) : null; } } /* categories */ if ($entries['sitemap_global_categories'] == 1) { foreach ($mod as $name) { if ($cfg[$name . "_module"] == 1) { switch ($name[0]) { case "l":$hr = $href['broadcasts']; break; case "v":$hr = $href['videos']; break; case "s":$hr = $href['shorts']; break; case "i":$hr = $href['images']; break; case "a":$hr = $href['audios']; break; case "d":$hr = $href['documents']; break; case "b":$hr = $href['blogs']; break; } $categ = $db->execute(sprintf("SELECT `ct_id`, `ct_slug` FROM `db_categories` WHERE `ct_type`='%s' AND `ct_active`='1';", ($name == 'document' ? 'doc' : $name))); if ($categ->fields['ct_id']) { while (!$categ->EOF) { $ht = self::sitemap_url(array($cfg['main_url'] . '/' . $hr . '/' . $categ->fields['ct_slug'], $current_date, 'daily', '0.9')); $categ->MoveNext(); } } } } } /* static pages */ if ($entries['sitemap_global_content'] == 1) { $fp = footerPages(); foreach ($fp as $_fk => $_fv) { $ht = self::sitemap_url(array($cfg['main_url'] . '/' . VHref::getKey("page") . '?t=' . $_fk, $current_date, 'weekly', '0.1')); } } echo $ht = $enc[2]; $content = ob_get_contents(); ob_end_clean(); /* sitemap filename */ $index[] = array('url' => $cfg['sitemap_url'] . '/sm_global/sitemap-general.xml', 'lastmod' => $current_date); $file = $cfg['sitemap_dir'] . '/sm_global/sitemap-general.xml'; /* write general sitemap */ if (!VFileinfo::write($file, $content)) { echo $errors = 'Failed to write the general sitemap file (' . $file . ')!'; } /* end global sitemap */ /* users sitemap */ if ($entries['sitemap_global_users'] == 1) { $count = 1; $start = 0; $amount = $entries['sitemap_global_max']; $sql = "SELECT `usr_key`,`usr_user` FROM `db_accountuser` WHERE `usr_status`='1' ORDER BY `usr_id` DESC"; $total = $db->execute("SELECT COUNT(*) AS `total` FROM `db_accountuser` WHERE `usr_status`='1';"); $total_users = $total->fields['total']; if ($total_users > 0) { while ($start < $total_users) { $filename = 'sitemap-users-' . $count . '.xml'; $users = $db->execute($sql . ' LIMIT ' . $start . ', ' . $amount); ob_start(); echo $ht = $enc[0], "\n"; echo $ht = $enc[1], "\n"; while (!$users->EOF) { $ht = self::sitemap_url(array(VHref::channelURL(["username" => $users->fields['usr_user']]), $current_date, 'weekly', '0.3')); $users->MoveNext(); } echo $ht = $enc[2]; $content = ob_get_contents(); ob_end_clean(); /* sitemap filename */ $file = $cfg['sitemap_dir'] . '/sm_global/' . $filename; $index[] = array('url' => $cfg['sitemap_url'] . '/sm_global/' . $filename, 'lastmod' => $current_date); /* write users sitemap */ if (!VFileinfo::write($file, $content)) { echo $errors = 'Failed to write the users sitemap file (' . $file . ')!'; } $start = ($start + $amount); ++$count; } } } //end users sitemap /* video, image, audio, doc sitemap */ foreach ($mod as $name) { if ($cfg[$name . "_module"] == 1 and $entries["sitemap_global_" . $name] == 1) { $count = 1; $start = 0; $amount = $entries['sitemap_global_max']; $tbl = ($name == 'document' ? 'doc' : $name); $sql = sprintf("SELECT A.`file_key`, A.`file_title` FROM `db_%sfiles` A WHERE A.`privacy`='public' AND A.`approved`='1' AND A.`deleted`='0' AND A.`active`='1' ORDER BY A.`db_id` DESC", $tbl); $total = $db->execute(sprintf("SELECT COUNT(*) AS `total` FROM `db_%sfiles` WHERE `privacy`='public' AND `approved`='1' AND `deleted`='0' AND `active`='1';", ($name == 'document' ? 'doc' : $name))); $total_files = $total->fields['total']; if ($total_files > 0) { while ($start < $total_files) { $filename = 'sitemap-' . $name . '-' . $count . '.xml'; $files = $db->execute($sql . ' LIMIT ' . $start . ', ' . $amount); ob_start(); echo $ht = $enc[0], "\n"; echo $ht = $enc[1], "\n"; while (!$files->EOF) { $ht = self::sitemap_url(array($cfg['main_url'] . '/' . VGenerate::fileHref($name[0], $files->fields['file_key'], $files->fields['file_title']), $current_date, 'weekly', '0.4')); $files->MoveNext(); } echo $ht = $enc[2]; $content = ob_get_contents(); ob_end_clean(); /* sitemap filename */ $file = $cfg['sitemap_dir'] . '/sm_global/' . $filename; $index[] = array('url' => $cfg['sitemap_url'] . '/sm_global/' . $filename, 'lastmod' => $current_date); /* write users sitemap */ if (!VFileinfo::write($file, $content)) { $errors = 'Failed to write the ' . $name . ' sitemap file (' . $file . ')!'; } $start = ($start + $amount); ++$count; } } } } //end foreach /* video, image, audio, doc, blog playlists sitemap */ foreach ($mod as $name) { if ($cfg[$name . "_module"] == 1 and $entries["sitemap_global_" . $name . "_pl"] == 1) { $count = 1; $start = 0; $amount = $entries['sitemap_global_max']; $sql = sprintf("SELECT `pl_key` FROM `db_%splaylists` WHERE `pl_privacy`='public' AND `pl_active`='1' ORDER BY `pl_id` DESC", ($name == 'document' ? 'doc' : $name)); $total = $db->execute(sprintf("SELECT COUNT(*) AS `total` FROM `db_%splaylists` WHERE `pl_privacy`='public' AND `pl_active`='1';", ($name == 'document' ? 'doc' : $name))); $total_pl = $total->fields['total']; if ($total_pl > 0) { while ($start < $total_pl) { $filename = 'sitemap-playlist-' . $name . '-' . $count . '.xml'; $pls = $db->execute($sql . ' LIMIT ' . $start . ', ' . $amount); ob_start(); echo $ht = $enc[0], "\n"; echo $ht = $enc[1], "\n"; while (!$pls->EOF) { $ht = self::sitemap_url(array($cfg['main_url'] . '/' . VHref::getKey("playlist") . '?' . $name[0] . '=' . $pls->fields['pl_key'], $current_date, 'monthly', '0.2')); $pls->MoveNext(); } echo $ht = $enc[2]; $content = ob_get_contents(); ob_end_clean(); /* sitemap filename */ $file = $cfg['sitemap_dir'] . '/sm_global/' . $filename; $index[] = array('url' => $cfg['sitemap_url'] . '/sm_global/' . $filename, 'lastmod' => $current_date); /* write users sitemap */ if (!VFileinfo::write($file, $content)) { $errors = 'Failed to write the ' . $name . ' playlist sitemap file (' . $file . ')!'; } $start = ($start + $amount); ++$count; } } } } //end foreach /* sitemap index */ ob_start(); echo $ht = '', "\n"; echo $ht = '', "\n"; foreach ($index as $key) { echo $ht = "\t", '', "\n"; echo $ht = "\t\t", '' . $key['url'] . '', "\n"; echo $ht = "\t\t", '' . $key['lastmod'] . '', "\n"; echo $ht = "\t", '', "\n"; } echo $ht = ''; $content = ob_get_contents(); ob_end_clean(); $file = $cfg['sitemap_dir'] . '/sm_global/sitemap.xml'; if (!VFileinfo::write($file, $content)) { $errors = 'Failed to write sitemap index file (' . $file . ')!'; } } } /* sitemap url entry */ public function sitemap_url($p) { echo $ht = "\t", '', "\n\t\t"; echo $ht = '' . $p[0] . '', "\n\t\t"; echo $ht = '' . $p[1] . '', "\n\t\t"; echo $ht = '' . $p[2] . '', "\n\t\t"; echo $ht = '' . $p[3] . '', "\n\t"; echo $ht = '', "\n"; } }