226 lines
8.3 KiB
PHP
226 lines
8.3 KiB
PHP
<?php
|
|
/*
|
|
+--------------------------------------------------------------------------
|
|
| CubeCart 4
|
|
| ========================================
|
|
| CubeCart is a registered trade mark of Devellion Limited
|
|
| Copyright Devellion Limited 2006. All rights reserved.
|
|
| Devellion Limited,
|
|
| 5 Bridge Street,
|
|
| Bishops Stortford,
|
|
| HERTFORDSHIRE.
|
|
| CM23 2JU
|
|
| UNITED KINGDOM
|
|
| http://www.devellion.com
|
|
| UK Private Limited Company No. 5323904
|
|
| ========================================
|
|
| Web: http://www.cubecart.com
|
|
| Email: info (at) cubecart (dot) com
|
|
| License Type: CubeCart is NOT Open Source Software and Limitations Apply
|
|
| Licence Info: http://www.cubecart.com/site/faq/license.php
|
|
+--------------------------------------------------------------------------
|
|
| sef_genpages.inc.php
|
|
| ========================================
|
|
| Build Static(ish) SEO Pages
|
|
+--------------------------------------------------------------------------
|
|
*/
|
|
if(!defined('CC_INI_SET')){ die("Access Denied"); }
|
|
|
|
## defunct as added to config file
|
|
## require("includes".CC_DS."ftp.inc.php");
|
|
|
|
$lang = getLang("admin".CC_DS."admin_settings.inc.php");
|
|
|
|
permission("settings","write", true);
|
|
|
|
include_once("includes".CC_DS."sef_urls.inc.php");
|
|
|
|
require($glob['adminFolder'].CC_DS."includes".CC_DS."header.inc.php");
|
|
|
|
?>
|
|
<p class="pageTitle"><?php echo $lang['admin']['settings_ftp_seo_title'];?></p>
|
|
<span class='copyText'>
|
|
<?php
|
|
|
|
if(substr($config['ftp_root_dir'], -1, 1)!=="/") { $config['ftp_root_dir'] = $config['ftp_root_dir']."/"; }
|
|
|
|
// connect to FTP server
|
|
$conn_id = FTPConnect($config['ftp_server'], $config['ftp_username'], $config['ftp_password']);
|
|
if(!$conn_id){
|
|
echo "<p>".$lang['admin']['settings_ftp_conn_fail']."</p>";
|
|
return;
|
|
}
|
|
|
|
// ok time to generate the product pages
|
|
$exist = $db->select("SELECT productId FROM ".$glob['dbprefix']."CubeCart_inventory order by productId");
|
|
if( $exist ) {
|
|
echo "<p><strong>".$lang['admin']['settings_ftp_writeing']."</strong></p>";
|
|
for($x = 0; $x < count($exist); $x++) {
|
|
$prodId = $exist[$x]['productId'];
|
|
$producturl = generateProductUrl($prodId);
|
|
$tempfilename = explode("?", basename($producturl));
|
|
$prodfilename = $tempfilename[0];
|
|
$proddirectory = dirname($producturl) . "/";
|
|
generatePage($config['ftp_root_dir'], $proddirectory, $prodfilename, $prodId, "prod");
|
|
echo sprintf($lang['admin']['settings_ftp_created'],$config['ftp_root_dir'].$proddirectory.$prodfilename)." <br />";
|
|
}
|
|
|
|
}
|
|
|
|
// ok time to generate the tellafriend pages
|
|
$exist = $db->select("SELECT productId FROM ".$glob['dbprefix']."CubeCart_inventory order by productId");
|
|
if( $exist ) {
|
|
echo "<p><strong>".$lang['admin']['settings_writing_taf']."</strong></p>";
|
|
for($x = 0; $x < count($exist); $x++) {
|
|
$prodId = $exist[$x]['productId'];
|
|
$producturl = generateTellFriendUrl($prodId);
|
|
$tempfilename = explode("?", basename($producturl));
|
|
$prodfilename = $tempfilename[0];
|
|
$proddirectory = dirname($producturl) . "/";
|
|
generatePage($config['ftp_root_dir'], $proddirectory, $prodfilename, $prodId, "taf");
|
|
echo sprintf($lang['admin']['settings_ftp_created'],$config['ftp_root_dir'].$proddirectory.$prodfilename)." <br />";
|
|
}
|
|
|
|
}
|
|
|
|
// ok time to generate the category pages
|
|
$exist = $db->select("SELECT cat_id FROM ".$glob['dbprefix']."CubeCart_category order by cat_id");
|
|
if( $exist ) {
|
|
echo "<p><strong>".$lang['admin']['settings_writing_cats']."</strong></p>";
|
|
for($x = 0; $x < count($exist); $x++) {
|
|
$catId = $exist[$x]['cat_id'];
|
|
$categoryurl = generateCategoryUrl($catId);
|
|
$tempfilename = explode("?", basename($categoryurl));
|
|
$catfilename = $tempfilename[0];
|
|
$catdirectory = dirname($categoryurl) . "/";
|
|
generatePage($config['ftp_root_dir'], $catdirectory, $catfilename, $catId, "cat");
|
|
echo sprintf($lang['admin']['settings_ftp_created'],$config['ftp_root_dir'].$catdirectory.$catfilename)." <br />";
|
|
}
|
|
// handle the sale item category page as a special case
|
|
$catId = "saleItems";
|
|
$categoryurl = generateCategoryUrl($catId);
|
|
$tempfilename = explode("?", basename($categoryurl));
|
|
$catfilename = $tempfilename[0];
|
|
$catdirectory = "";
|
|
generatePage($config['ftp_root_dir'], $catdirectory, $catfilename, $catId, "cat");
|
|
echo sprintf($lang['admin']['settings_ftp_created'],$config['ftp_root_dir'].$catdirectory.$catfilename)." <br />";
|
|
|
|
}
|
|
|
|
// ok time to generate the document pages
|
|
$exist = $db->select("SELECT doc_id FROM ".$glob['dbprefix']."CubeCart_docs order by doc_id");
|
|
if( $exist ) {
|
|
echo "<p><strong>".$lang['admin']['settings_writing_docs']."</strong></p>";
|
|
for($x = 0; $x < count($exist); $x++) {
|
|
$docId = $exist[$x]['doc_id'];
|
|
$documenturl = generateDocumentUrl($docId);
|
|
$tempfilename = explode("?", basename($documenturl));
|
|
$docfilename = $tempfilename[0];
|
|
$docdirectory = dirname($documenturl) . "/";
|
|
generatePage($config['ftp_root_dir'], $docdirectory, $docfilename, $docId, "doc");
|
|
echo sprintf($lang['admin']['settings_ftp_created'],$config['ftp_root_dir'].$docdirectory.$docfilename)." <br />";
|
|
}
|
|
}
|
|
|
|
// disconnect from FTP server
|
|
FTPDisconnect($conn_id);
|
|
|
|
echo "<p>".$lang['admin']['settings_ftp_complete']."</p>";
|
|
|
|
|
|
// END OF SCRIPT!!
|
|
|
|
|
|
|
|
/**************** functions *****************************/
|
|
|
|
function generatePage($cubecartdir, $dir, $filename, $Id, $pagetype){
|
|
global $conn_id, $config;
|
|
|
|
// create directory structure
|
|
FTPMkDir($conn_id, "/".$config['ftp_root_dir'].$dir);
|
|
|
|
// count directory deep levels
|
|
$path = split("/", $dir);
|
|
$deep = count($path);
|
|
$homedir = "./";
|
|
for ($i=1; $i<$deep; $i++) $homedir = $homedir . "../";
|
|
|
|
// open file for writing
|
|
// most likely it already exists need to delete it then so we can update it
|
|
@ftp_delete($conn_id, '/'.$config['ftp_root_dir'].$dir.$filename);
|
|
|
|
$handle = @fopen('ftp://'.$config['ftp_username'].':'.$config['ftp_password'].'@'.$config['ftp_server'].'/'.$cubecartdir.$dir.$filename, "w");
|
|
|
|
// generate correct page contents
|
|
if (strcmp($pagetype, "prod") == 0) {
|
|
$pagecontents = "<?php\n\n// This is an automatic SEO Mod generated file. Do not modify!\n\nchdir('$homedir');\n".'$_GET[\'act\']=\'viewProd\';'."\n".'$_GET[\'productId\']'."='$Id';\nrequire('index.php');\n\n?>\n";
|
|
} else if(strcmp($pagetype, "cat") == 0) {
|
|
$pagecontents = "<?php\n\n// This is an automatic SEO Mod generated file. Do not modify!\n\nchdir('$homedir');\n".'$_GET[\'act\']=\'viewCat\';'."\n".'$_GET[\'catId\']'."='$Id';\nrequire('index.php');\n\n?>\n";
|
|
} else if(strcmp($pagetype, "taf") == 0) {
|
|
$pagecontents = "<?php\n\n// This is an automatic SEO Mod generated file. Do not modify!\n\nchdir('$homedir');\n".'$_GET[\'act\']=\'taf\';'."\n".'$_GET[\'productId\']'."='$Id';\nrequire('index.php');\n\n?>\n";
|
|
} else if(strcmp($pagetype, "doc") == 0) {
|
|
$pagecontents = "<?php\n\n// This is an automatic SEO Mod generated file. Do not modify!\n\nchdir('$homedir');\n".'$_GET[\'act\']=\'viewDoc\';'."\n".'$_GET[\'docId\']'."='$Id';\nrequire('index.php');\n\n?>\n";
|
|
}
|
|
|
|
// write and close file
|
|
fwrite($handle, $pagecontents);
|
|
fclose($handle);
|
|
|
|
// lets change permissions to 755
|
|
for ($i=0; $i<5; $i++) // damn command can execute asychronous to above file creation meaning file might not be ready yet, simplest hack
|
|
{
|
|
if (@ftp_site($conn_id, 'CHMOD 0755 '.'/'.$cubecartdir.$dir.$filename) == true)
|
|
break; // success!
|
|
sleep(1);
|
|
}
|
|
|
|
// ok for some reason I can only assume the asychronous behaviour between the FTP library and fopen we get a filesize of 0
|
|
// extremely rare but a pain in the neck nevertheless. If this happens redo this function. Simple hack
|
|
if(@ftp_size($conn_id, '/'.$config['ftp_root_dir'].$dir.$filename) == 0)
|
|
{
|
|
generatePage($cubecartdir, $dir, $filename, $Id, $pagetype);
|
|
}
|
|
}
|
|
|
|
/***************** FTP functions ************************/
|
|
|
|
function FTPConnect($server, $username, $password){
|
|
$conn_id = @ftp_connect($server);
|
|
if($conn_id != FALSE) {
|
|
if(@ftp_login($conn_id, $username, $password) == FALSE)
|
|
{
|
|
@ftp_close($conn_id);
|
|
$conn_id = FALSE; // wrong details
|
|
}
|
|
}
|
|
return $conn_id;
|
|
}
|
|
|
|
function FTPDisconnect($conn_id){
|
|
ftp_close($conn_id);
|
|
}
|
|
|
|
function FTPMkDir($conn_id, $path){
|
|
$dir=split("/", $path);
|
|
$path="";
|
|
$ret = true;
|
|
|
|
for ($i=1;$i<count($dir);$i++){
|
|
$path.="/".$dir[$i];
|
|
if(!@ftp_chdir($conn_id,$path)){
|
|
@ftp_chdir($conn_id,"/");
|
|
if(!@ftp_mkdir($conn_id,$path)){
|
|
$ret=false;
|
|
break;
|
|
}
|
|
ftp_site($conn_id, 'CHMOD 0755 '.$path);
|
|
}
|
|
}
|
|
return $ret;
|
|
}
|
|
|
|
/* <rf> end mods */
|
|
|
|
?>
|
|
</span>
|