| Current Path : /var/www/iplanru/data/www/www.i-plan.ru/plugins/system/seflinkreplace/ |
| Current File : /var/www/iplanru/data/www/www.i-plan.ru/plugins/system/seflinkreplace/seflinkreplace.php |
<?php
// No direct access
defined( '_JEXEC' ) or die;
/**
*
* @package Joomla.Plugin
* @subpackage System.Seflinkreplace
* @since 2.5+
* @author kirdinyuri
*/
class plgSystemSeflinkreplace extends JPlugin
{
/**
* Class Constructor
* @param object $subject
* @param array $config
*/
public function __construct( & $subject, $config )
{
parent::__construct( $subject, $config );
$this->loadLanguage();
}
function onAfterRender()
{
$langtourl='';
//получение языка
$lang=JFactory::getLanguage();
$lang=$lang->getTag();
$lang = substr($lang,0,2);
if ($lang<>'ru'){$langtourl="{$lang}";}
$user = JFactory::getUser();
$db= JFactory::getDBO();
$app =JFactory::getApplication();
$doc = JFactory::getDocument();
$jinput = JFactory::getApplication()->input;
$Itemid=$jinput->get( 'Itemid', 0,'INT' );
// проверка, что мы не в административной панели
if ($app->getName()!= 'site') {
return true;
}
// получаем текст сформированной страницы
$buffer = JResponse::getBody();
//массив со статическими ссылками
$static_prepare=explode("\r\n", $this->params->get('static-links'));
if ($static_prepare)
{
foreach($static_prepare as $str)
{
$static_prepare2=explode("|",$str);
if ($static_prepare2[0]<>'' and $static_prepare2[1]<>'')
$static[]=array("from"=>$static_prepare2[1], "to"=>$static_prepare2[0]);
}
}
unset($static_prepare,$static_prepare2);
// делаем замены в тексте
//$buffer = str_replace('test', 'tost', $buffer);
preg_match_all("~".'href=\"'."(.*?)".'\"'."~is", $buffer, $m);
$m=$m[1];
$m = array_unique($m);
// print_r($m);
if (count($m)<>0)
{
foreach ($m as $link)
{
$f='';
$pr_static=true;
$link2 = str_replace('&', '&', $link);
$url = explode('?', $link2);
$getparam=array();
$worktype='';
if (isset($url[1])) {parse_str($url[1],$getparam);}
/* $split_parameters = explode('&', $url[1]);
for($i = 0; $i < count($split_parameters); $i++) {
$final_split = explode('=', $split_parameters[$i]);
if ($final_split[0]<>'' and $final_split[1]<>'')
{$getparam[$final_split[0]] = str_replace('"','\"',$final_split[1]);}
}*/
//обработчик статических ссылок
foreach($static as $st)
{
if ('/'.$st["from"]==$link2 or $st["from"]==$link2)
{
$buffer = str_replace('href="'.$link.'"', 'href="'.'/'.$st["to"].'"', $buffer);
$pr_static=false;
}
}
//print_r($getparam);
//http://i-plan.ru/index.php?option=com_zoo&item_id=2332&Itemid=109&view=item
//http://i-plan.ru/mi.php?id=2492
if ($pr_static and $lang=="ru")
{
//получение типа работы+++++++++++++++++++++++++++++
if (isset($getparam["option"]) && $getparam["option"]=="com_zoo" and isset($getparam["view"]) && $getparam["view"]=="item" and $getparam["item_id"]<>'')
{
$list = $db->setQuery('SELECT id,elements FROM #__zoo_item where id='.$getparam["item_id"])->loadAssoc();
$a=json_decode($list['elements'],true);
if (isset($a['755b5888-e07b-4af9-b0a9-b864291f1586'])) {$worktype=$a['755b5888-e07b-4af9-b0a9-b864291f1586']['option']['0'];}
}
if ((strpos($link2, "bp.php")<>0 or strpos($link2, "mi.php")<>0) and isset($getparam["id"]) && $getparam["id"]<>'' and $worktype=='')
{
$list = $db->setQuery('SELECT id,elements FROM #__zoo_item where id='.$getparam["id"])->loadAssoc();
$a=json_decode($list['elements'],true);
if (isset($a['755b5888-e07b-4af9-b0a9-b864291f1586'])) {$worktype=$a['755b5888-e07b-4af9-b0a9-b864291f1586']['option']['0'];}
}
//++++++++++++++++++++++++++++++++++++++++++++++++++
//если это работа
//if ($getparam["option"]=="com_zoo" and $getparam["view"]=="item" and $worktype<>'')
// {$buffer = str_replace('href="'.$link.'"', 'href="'.$langtourl.'/'.$worktype.'.php?id='.$getparam["item_id"].'"', $buffer);}
//если это работа с неправильным Itemid
if (isset($getparam["option"]) && $getparam["option"]=="com_zoo" and isset($getparam["view"]) && $getparam["view"]=="item" and $worktype<>'' and $getparam["Itemid"]<>"117")
{$buffer = str_replace('href="'.$link.'"', 'href="'.$langtourl.'/catalog.php?id='.$getparam["item_id"].'"', $buffer);}
//если это работа
if (isset($getparam["option"]) && $getparam["option"]=="com_zoo" and isset($getparam["view"]) && $getparam["view"]=="item" and $worktype<>'')
{$buffer = str_replace('href="'.$link.'"', 'href="'.$langtourl.'/catalog.php?id='.$getparam["item_id"].'"', $buffer);}
//http://i-plan.ru/index.php?option=com_zoo&category_id=196&Itemid=109&view=category
//http://i-plan.ru/mi.php?cat=196
//eсли это категория
/*if ($getparam["option"]=="com_zoo" and $getparam["view"]=="category")
{
$f='';
$page='';
//echo $link.'<br>';
if ($getparam["Itemid"]==$this->params->get('itemid-bp')) $f='bp';
if ($getparam["Itemid"]==$this->params->get('itemid-mi')) $f='mi';
if ($getparam["page"]<>'') $page='&page='.$getparam["page"];
if ($f=='' and $getparam["category_id"]<>'')
{
$list = $db->setQuery('SELECT params val FROM jos_zoo_category where id='.$getparam["category_id"])->loadObjectList();
foreach($list as $row)
{
if ($f=='')
{
$a=json_decode($row->val,true);
if ($a['metadata.title']=="Бизнес-планы") {$f='bp';}
if ($a['metadata.title']=="Маркетинговые исследования") {$f='mi';}
}
}
}
if ($f<>'')
{
$buffer = str_replace('href="'.$link.'"', 'href="'.$langtourl.'/'.$f.'.php?cat='.$getparam["category_id"].$page.'"', $buffer);
}
}*/
//если это категория (ссылки типа http://i-plan.ru/bp/napitki/bezalkogolnye/soki.php)
if (isset($getparam["option"]) && $getparam["option"]=="com_zoo" and isset($getparam["view"]) && $getparam["view"]=="category" and isset($getparam["category_id"]) && $getparam["category_id"]<>'' and $getparam["category_id"]<>'2376')
{
if ($getparam["Itemid"]=='108') { $type_item='/bp';}
if ($getparam["Itemid"]=='109') { $type_item='/mi';}
if ($getparam["Itemid"]=='117') { $type_item='';}
if ($getparam["Itemid"]=='101') { $type_item='';}
if ($type_item<>'' or $getparam["Itemid"]=='117')
{
$caturl=$type_item.".php";
$i=$getparam["category_id"];
do {
$list = $db->setQuery('SELECT id,alias,parent FROM jos_zoo_category where id='.$i)->loadAssoc();
if ($list['id']<>'')
{
$caturl='/'.$list['alias'].$caturl;
$i=$list['parent'];
}
} while ($list['parent']<>"0" and $list['parent']<>"2376");
$buffer = str_replace('href="'.$link.'"', 'href="'.$caturl.'"', $buffer);
}
unset($caturl,$type_item);
}
//если это ПО
if (isset($getparam["option"]) && $getparam["option"]=="com_zoo" and isset($getparam["view"]) && $getparam["view"]=="item" and $worktype=='' and $getparam["Itemid"]=="195" )
{$buffer = str_replace('href="'.$link.'"', 'href="'.$langtourl.'/experience.php?id='.$getparam["item_id"].'"', $buffer);}
//если это ПО категория
if (isset($getparam["option"]) && $getparam["option"]=="com_zoo" and isset($getparam["view"]) && $getparam["view"]=="category" and isset($getparam["category_id"]) && $getparam["category_id"]<>'' and $worktype=='' and $getparam["Itemid"]=="195" and $getparam["page"]=='')
{$buffer = str_replace('href="'.$link.'"', 'href="'.$langtourl.'/experience.php?cat='.$getparam["category_id"].'"', $buffer);}
//если это ПО категория c пейджером
if (isset($getparam["option"]) && $getparam["option"]=="com_zoo" and isset($getparam["view"]) && $getparam["view"]=="category" and isset($getparam["category_id"]) && $getparam["category_id"]<>'' and $worktype=='' and $getparam["Itemid"]=="195" and $getparam["page"]<>'')
{$buffer = str_replace('href="'.$link.'"', 'href="'.$langtourl.'/experience.php?cat='.$getparam["category_id"].'&page='.$getparam["page"].'"', $buffer);}
//усли это новости /index.php?option=com_zoo&item_id=3233&Itemid=101&view=item
if (isset($getparam["option"]) && $getparam["option"]=="com_zoo" and isset($getparam["view"]) && $getparam["view"]=="item" and ($getparam["Itemid"]=="101" or $getparam["Itemid"]=="") )
{
$list = $db->setQuery('SELECT application_id as aid FROM jos_zoo_item where id='.$getparam["item_id"])->loadAssoc();
if ($list['aid']=='2')$buffer = str_replace('href="'.$link.'"', 'href="'.$langtourl.'/articles.php?id='.$getparam["item_id"].'"', $buffer);
}
//если это статьи
if (isset($getparam["option"]) && $getparam["option"]=="com_zoo" and isset($getparam["view"]) && $getparam["view"]=="item" and $worktype=='' and $getparam["Itemid"]=="119" )
{$buffer = str_replace('href="'.$link.'"', 'href="'.$langtourl.'/articles.php?id='.$getparam["item_id"].'"', $buffer);}
//если это vacancy
if (isset($getparam["option"]) && $getparam["option"]=="com_zoo" and isset($getparam["view"]) && $getparam["view"]=="item" and $worktype=='' and $getparam["Itemid"]=="112" )
{$buffer = str_replace('href="'.$link.'"', 'href="'.$langtourl.'/vacancy.php?id='.$getparam["item_id"].'"', $buffer);}
//если это awards
if (isset($getparam["option"]) && $getparam["option"]=="com_zoo" and isset($getparam["view"]) && $getparam["view"]=="item" and $worktype=='' and $getparam["Itemid"]=="157" )
{$buffer = str_replace('href="'.$link.'"', 'href="'.$langtourl.'/awards.php?id='.$getparam["item_id"].'"', $buffer);}
//последний дубликат
if (strpos($link2, "bp.php")<>0 and isset($getparam["id"]) && $getparam["id"]<>'')
{$buffer = str_replace('href="'.$link.'"', 'href="'.$langtourl.'/catalog.php?id='.$getparam["id"].'"', $buffer);}
if (strpos($link2, "mi.php")<>0 and isset($getparam["id"]) && $getparam["id"]<>'')
{$buffer = str_replace('href="'.$link.'"', 'href="'.$langtourl.'/catalog.php?id='.$getparam["id"].'"', $buffer);}
//если это форма заказа
if (isset($getparam["option"]) && $getparam["option"]=="com_pay" and $getparam["method"] and $getparam["item_id"]<>"" and $getparam["item_id"]<>"0")
{$buffer = str_replace('href="'.$link.'"', 'href="'.$langtourl.'/pay.php?method='.$getparam["method"].'&item_id='.$getparam["item_id"].'"', $buffer);}
if (isset($getparam["option"]) && $getparam["option"]=="com_pay" and $getparam["method"] and ($getparam["item_id"]=="" or $getparam["item_id"]=="0"))
{$buffer = str_replace('href="'.$link.'"', 'href="'.$langtourl.'/pay.php?method='.$getparam["method"].'"', $buffer);}
}
unset($getparam,$url,$split_parameters,$final_split,$f,$list,$a,$link2,$worktype);
}
}
//==========================================================
$matid=0;
$option='';
$view='';
$Itemid=0;
$turl='';
$burl='';
$worktype='';
//проверка текущего урл
$burl = isset($_SERVER['REQUEST_URI']) ? $_SERVER['REQUEST_URI'] : '';
$turl = isset($_SERVER['REDIRECT_URL']) ? $_SERVER['REDIRECT_URL'] : '';
$matid=$jinput->get( 'item_id', 0, 'INT' );
$option=$jinput->get( 'option', '');
$view=$jinput->get( 'view', '');
$Itemid=$jinput->get( 'Itemid', 0,'INT' );
$cat=$jinput->get( 'cat', 0,'INT');
//получение типа работы
if (($turl=="/bp.php" or $turl=="/mi.php" or $turl=="/catalog.php") and $matid<>0)
{
$list = $db->setQuery('SELECT id,elements FROM #__zoo_item where id="'.$matid.'"')->loadAssoc();
$a=json_decode($list['elements'],true);
$worktype=$a['755b5888-e07b-4af9-b0a9-b864291f1586']['option']['0'];
}
if ($matid<>0 and $worktype=='')
{
$list = $db->setQuery('SELECT c.params val FROM jos_zoo_category_item ci, jos_zoo_category c
where ci.category_id=c.id and ci.item_id='.$matid)->loadObjectList();
foreach($list as $row)
{
if ($worktype=='')
{
$a=json_decode($row->val,true);
if ($a['metadata.title']=="Бизнес-планы") {$worktype='bp';}
if ($a['metadata.title']=="Маркетинговые исследования") {$worktype='mi';}
}
}
}
if ($turl=="/bp.php" and $matid<>0 and $worktype=='mi')
{header("HTTP/1.0 404 Not Found"); header("HTTP/1.1 404 Not Found"); header("Status: 404 Not Found");}
if ($turl=="/mi.php" and $matid<>0 and $worktype=='bp')
{header("HTTP/1.0 404 Not Found"); header("HTTP/1.1 404 Not Found"); header("Status: 404 Not Found");}
//404 на старые ссылки работ
if ( $turl=='' and $option=="com_zoo" and $view="item" and $matid<>0 and $_GET['option']<>'payment' and $worktype<>'')
{header("HTTP/1.0 404 Not Found"); header("HTTP/1.1 404 Not Found"); header("Status: 404 Not Found");}
//404 на неверные ссылки клиентов и партнеров
if ( $turl=='' and $option=="com_zoo" and $view="item" and $matid<>0 and $Itemid<>118)
{
$list = $db->setQuery('SELECT application_id FROM jos_zoo_item where id='.$matid)->loadAssocList();
if($list[0]['application_id']=='4')
{header("HTTP/1.0 404 Not Found"); header("HTTP/1.1 404 Not Found"); header("Status: 404 Not Found");}
}
//404 на длинные ссылки клиентов и партнеров
//if ( $turl=='' and $option=="com_zoo" and $view="item" and $matid<>0 and $Itemid==118)
//{header("HTTP/1.0 404 Not Found"); header("HTTP/1.1 404 Not Found"); header("Status: 404 Not Found");}
//проверяем id категории и материала на валидность
if ($turl=="/bp.php" or $turl=="/mi.php")
{
if ($jinput->get( 'item_id')<>'')
{
$list = $db->setQuery('SELECT id val FROM jos_zoo_item where id='.$jinput->get( 'item_id',0,'INT'))->loadAssoc();
if($list['val']=='')
{header("HTTP/1.0 404 Not Found"); header("HTTP/1.1 404 Not Found"); header("Status: 404 Not Found");}
}
if ($jinput->get( 'cat')<>'')
{
$list = $db->setQuery('SELECT id val FROM jos_zoo_category where id='.$jinput->get( 'cat',0,'INT'))->loadAssoc();
if($list['val']=='')
{header("HTTP/1.0 404 Not Found"); header("HTTP/1.1 404 Not Found"); header("Status: 404 Not Found");}
}
}
//404 на материалы применяемые для сео модуля
if ( $turl=='' and $option=="com_zoo" and $view="item" and $matid<>0)
{
$list = $db->setQuery('SELECT application_id FROM jos_zoo_item where id='.$matid)->loadAssocList();
if($list[0]['application_id']=='12')
{header("HTTP/1.0 404 Not Found"); header("HTTP/1.1 404 Not Found"); header("Status: 404 Not Found");}
}
//Замена ссылок с index.php
$buffer = str_replace( "index.php?option=", "?option=",$buffer);
$buffer = str_replace( "&lang=ru", "",$buffer);
//подмена ссылки на англ главную
if ($lang=="en")
{
$buffer = str_replace( "<a href=\"http://i-plan.ru/\" class=\"level1 active current\">",
"<a href=\"http://i-plan.ru/en/\" class=\"level1 active current\">",$buffer);
$buffer = str_replace( "<a href=\"http://i-plan.ru/\" class=\"level1\">",
"<a href=\"http://i-plan.ru/en/\" class=\"level1\">",$buffer);
}
//Автозамена в тексте страницы для англ версии
/*if ($lang=="en")
{
$pars=explode("\r\n", $this->params->get('autoreplace'));
if (count($pars)<>0)
{
foreach($pars as $par)
{
$part=explode("|", $par);
if (count($part)==2)
{
if (trim($part[0])<>'' and trim($part[1])<>'')
{$par1[]=trim($part[0]);$par2[]=trim($part[1]);}
}
}
if (count($par1)<>0 and count($par2)<>0) {$buffer = str_replace($par1,$par2,$buffer);}
}
}*/
//Автозамена текста на текст
$repfrom=array(
"Не нашли, что искали. Закажите исследование под свой проект!",
"Обновление данных под заказ"
);
$repto=array(
"<a href=\"pay.php?method=min\">Не нашли, что искали. Закажите исследование под свой проект!</a>",
"Обновление данных под заказ<span style=\"margin-left: 5px;\"><a style=\"font-size: 13px; color: red;\" href=\"pay.php?method={$worktype}g&id={$matid}\">Есть версия 2015 года. Звоните!</a></span>"
);
$buffer = str_replace($repfrom,$repto,$buffer);
if ($buffer != '') {
// подменяем текст страницы
JResponse::setBody($buffer);
}
return true;
}
public function onBeforeCompileHead()
{
$turl='';
$lang=JFactory::getLanguage();
$lang=$lang->getTag();
$lang = substr($lang,0,2);
//if ($lang<>'ru'){$langtourl="{$lang}";}
$app = JFactory::getApplication();
// проверка, что мы не в административной панели
if ($app->getName()!= 'site') {
return true;
}
$user = JFactory::getUser();
$db= JFactory::getDBO();
//if ($user->id<>'')
{
$doc = JFactory::getDocument();
$data = $doc->getHeadData();
if (isset($_SERVER['REDIRECT_URL'])) {$turl = $_SERVER['REDIRECT_URL'];}
$jinput = JFactory::getApplication()->input;
$matid=$jinput->get( 'item_id', 0, 'INT' );
$Itemid=$jinput->get( 'Itemid', 0,'INT' );
$category_id=$jinput->get( 'category_id', 0,'INT');
$ifwork=false;
//canonical
if ($turl=="/mi.php" or $turl=="/bp.php" or $turl=="/catalog.php")
{
if ($matid<>0)
{
$list = $db->setQuery('SELECT name, elements FROM jos_zoo_item where id='.$matid)->loadAssoc();
$a=json_decode($list['elements'],true);
$fmid=$a['6e6bfd81-74f2-434c-8306-b80e2287bf44']['item']['0'];
$prfm=$a['5eea65b2-7504-4863-bae7-7fb95490e156']['option']['0'];
$typework=$a['755b5888-e07b-4af9-b0a9-b864291f1586']['option']['0'];
$cat_canon=$a['590dc7f6-a0d8-4062-810a-92d118568f5e']['category']['0'];
//-------------------------старый способ
/*if ($prfm=="rabota-s-fm")
{
foreach($data['links'] as $key=>$value){
if ($value['relation']=='canonical') unset($data['links'][$key]);
}
$doc->setHeadData($data);
//$doc->addHeadLink(htmlspecialchars($turl.'?id='.$matid), 'canonical');
}
else
{
if ($fmid<>'')
{
foreach($data['links'] as $key=>$value){
if ($value['relation']=='canonical') unset($data['links'][$key]);
}
$doc->setHeadData($data);
$doc->addHeadLink(htmlspecialchars('http://'.$_SERVER['SERVER_NAME'].$turl.$langtourl.'?id='.$fmid), 'canonical');
//$doc->addHeadLink(htmlspecialchars($turl.'?id='.$matid), 'canonical');
}
else
{
foreach($data['links'] as $key=>$value){
if ($value['relation']=='canonical') unset($data['links'][$key]);
}
$doc->setHeadData($data);
//$doc->addHeadLink(htmlspecialchars($turl.'?id='.$matid), 'canonical');
}
}*/
//-------------------------старый способ
//-------------------------новый способ
if ($cat_canon and $typework=="bp")
{
/*$list = $db->setQuery('
SELECT id, elements
FROM jos_zoo_item
where instr(elements, "'.$cat_canon.'")<>0 and instr(elements, "rabota-s-fm")<>0
order by created desc')->loadAssocList();
foreach($list as $item)
{
if (!$can_id)
{
$c=json_decode($item['elements'],true);
if ($c['5eea65b2-7504-4863-bae7-7fb95490e156']['option']['0']=="rabota-s-fm" and
$c['590dc7f6-a0d8-4062-810a-92d118568f5e']['category']['0']==$cat_canon)
{
$can_id=$item['id'];
}
}
}
*/
//ручной способ
$list = $db->setQuery("SELECT params FROM #__zoo_category WHERE id=\"{$cat_canon}\"")->loadAssoc();
$can_id=json_decode($list["params"],TRUE);
$can_id=strip_tags($can_id["content.teaser_description"]);
//if ($_GET[sql]=='1') echo "111".$can_id;
if ($can_id and $can_id<>$matid)
{
foreach($data['links'] as $key=>$value){
if ($value['relation']=='canonical') unset($data['links'][$key]);
}
$doc->setHeadData($data);
$doc->addHeadLink(htmlspecialchars('http://'.$_SERVER['SERVER_NAME'].$turl.'?id='.$can_id), 'canonical');
}
else
{
foreach($data['links'] as $key=>$value){
if ($value['relation']=='canonical') unset($data['links'][$key]);
}
$doc->setHeadData($data);
}
}
//-------------------------новый способ
$ifwork=true;
}
}
//удаление каноникал со страниц которые не явл работами.
if (!$ifwork)
{
foreach($data['links'] as $key=>$value){
if ($value['relation']=='canonical') unset($data['links'][$key]);
}
$doc->setHeadData($data);
}
//http://i-plan.ru/index.php?option=com_zoo&category_id=196&Itemid=109&view=category
//Каноникал на структуре 2
if ($jinput->get( 'category_id', 0, 'INT' )<>0 and $jinput->get( 'view',"" )=="category" )
{
$canonicalstuct2=explode("\r\n", $this->params->get('canonicalstuct2'));
if (count($canonicalstuct2)<>0)
{
foreach($canonicalstuct2 as $item)
{
$m=explode("|", $item);
if (count($m)==3)
{
if ($jinput->get( 'category_id', 0, 'INT' )==$m[0])
{
foreach($data['links'] as $key=>$value){
if ($value['relation']=='canonical') unset($data['links'][$key]);
}
$doc->setHeadData($data);
$doc->addHeadLink(htmlspecialchars('http://'.$_SERVER['SERVER_NAME']."/".$m[2].".php".'?cat='.$m[1]), 'canonical');
}
}
}
}
}
//file download
if ($turl=="/mi.php" or $turl=="/bp.php" or $turl=="/catalog.php")
{
if ($matid<>0)
{
header('Content-type: application/pdf');
//header("Content-Disposition: attachment; filename=\"files/price1.pdf\"");
header("Content-Type: application/force-download");
}
}
}
//301 redirect
if ($_SERVER['REQUEST_URI']=="pay.php?method=bpn")
{
header("HTTP/1.1 301 Moved Permanently");
header("Location: /development.php");
exit();
}
if ($_SERVER['REQUEST_URI']=="pay.php?method=min")
{
header("HTTP/1.1 301 Moved Permanently");
header("Location: /midevelopment.php");
exit();
}
}
}