Установил компонент, при попытке перейти в админке к компоненту (/administrator/index.php?option=com_ksenmart) получаю вот такую петрушку кода на белом экране. Что делать?
VPS, php 5.3,
cURL, apc, debian
---
вижу у человека под ником scanners такая же проблема была еще в ноябре 2012 года -
http://joomlaforum.ru/index.php/topic,223272.msg1226316.html#msg1226316. Прошло 6 месяцев она сохранилась по сей день. Как решили ее? Или не решили?
[code]setQuery($query); $modules=$db->loadObjectList(); foreach($modules as $module) { include(JPATH_COMPONENT.'/extentions/modules/'.$module->name.'/'.$module->name.'.php'); if (file_exists(JPATH_COMPONENT.'/extentions/modules/'.$module->name.'/'.$module->name.'.css')) $document->addStyleSheet(JURI::base().'components/com_ksenmart/extentions/modules/'.$module->name.'/'.$module->name.'.css'); if (file_exists(JPATH_COMPONENT.'/extentions/modules/'.$module->name.'/'.$module->name.'.js')) $document->addScript(JURI::base().'components/com_ksenmart/extentions/modules/'.$module->name.'/'.$module->name.'.js'); } } else { //$query="select * from #__ksenmart_modules where name='$name' and published='1'"; //$db->setQuery($query); //$module=$db->loadObject(); //if (count($module)>0) //{ include(JPATH_COMPONENT.'/extentions/modules/'.$name.'/'.$name.'.php'); if (file_exists(JPATH_COMPONENT.'/extentions/modules/'.$name.'/'.$name.'.css')) $document->addStyleSheet(JURI::base().'components/com_ksenmart/extentions/modules/'.$name.'/'.$name.'.css'); if (file_exists(JPATH_COMPONENT.'/extentions/modules/'.$name.'/'.$name.'.js')) $document->addScript(JURI::base().'components/com_ksenmart/extentions/modules/'.$name.'/'.$name.'.js'); //} } } function loadShortComponentInfo($component) { if (file_exists(JPATH_COMPONENT.'/extentions/components/'.$component.'/shortinfo.php')) include(JPATH_COMPONENT.'/extentions/components/'.$component.'/shortinfo.php'); } function getCategoryTree($parent,$level,$selected=array(),$show_root=0) { $db=JFactory::getDBO(); $query="select * from #__ksenmart_categories where parent='$parent' order by ordering"; $db->setQuery($query); $cats=$db->loadObjectList(); $return=''; if (count($cats)>0 || $show_root!=0) $return='
'; if ($show_root==1) { $class='cat-level-'.$level; if (in_array(0,$selected)) $class.=' active'; $return.='
'.JText::_('empty_cat').'
'; } foreach($cats as $cat) { $class='cat-level-'.$level; if ($level>1) $class.=' hide'; if (in_array($cat->id,$selected)) $class.=' active'; $return.='
'.$cat->title; $return_childs=KsenMartHelper::GetCategoryTree($cat->id,$level+1,$selected); if ($return_childs!='') $return.=''.$return_childs.'
'; else $return.=''; } if (count($cats)>0 || $show_root!=0) $return.='
'; return $return; } private static $_config = array(); private static $_settings_cache = array(); public static function getSettingsValue($name,$default='') { if (empty(self::$_config)) { $db=JFactory::getDBO(); $query="select * from #__ksenmart_settings "; $db->setQuery($query); self::$_config = $db->loadObjectList('name'); } if (!array_key_exists($name, self::$_config)){ self::$_settings_cache[$name] = null; } else { self::$_settings_cache[$name] = self::$_config[$name]->value; } $ret = self::$_settings_cache[$name]; if (!is_null($ret)){ return $ret; } else { return $default; } } function SaveSetting($name,$value) { $db=JFactory::getDBO(); $query="update #__ksenmart_settings set value='$value' where name='$name'"; $db->setQuery($query); $res=$db->Query(); return $res; } function ClearImageCache($file) { $cache_dir=JPATH_COMPONENT.'/image/cache/'; $dir=scandir($cache_dir); foreach($dir as $d) { if ($d!='.' && $d!='..') { if (file_exists($cache_dir.$d.'/'.$file)) unlink($cache_dir.$d.'/'.$file); } } } function GenAlias($str,$type='') { $converter = array( 'Р°' => 'a', 'Р±' => 'b', 'РІ' => 'v', 'Рі' => 'g', 'Рґ' => 'd', 'Рµ' => 'e', 'С‘' => 'e', 'Р¶' => 'zh', 'Р·' => 'z', 'Рё' => 'i', 'Р№' => 'y', 'Рє' => 'k', 'Р»' => 'l', 'Рј' => 'm', 'РЅ' => 'n', 'Рѕ' => 'o', 'Рї' => 'p', 'СЂ' => 'r', 'СЃ' => 's', 'С‚' => 't', 'Сѓ' => 'u', 'С„' => 'f', 'С…' => 'h', 'С†' => 'c', 'С‡' => 'ch', 'С?' => 'sh', 'С‰' => 'sch', 'СЊ' => '\'', 'С‹' => 'y', 'СЉ' => '\'', 'СЌ' => 'e', 'СЋ' => 'yu', 'СЏ' => 'ya', 'Рђ' => 'A', 'Р‘' => 'B', 'Р’' => 'V', 'Р“' => 'G', 'Р”' => 'D', 'Р•' => 'E', 'РЃ' => 'E', 'Р–' => 'Zh', 'Р—' => 'Z', 'Р?' => 'I', 'Р™' => 'Y', 'Рљ' => 'K', 'Р›' => 'L', 'Рњ' => 'M', 'Рќ' => 'N', 'Рћ' => 'O', 'Рџ' => 'P', 'Р ' => 'R', 'РЎ' => 'S', 'Рў' => 'T', 'РЈ' => 'U', 'Р¤' => 'F', 'РҐ' => 'H', 'Р¦' => 'C', 'Р§' => 'Ch', 'РЁ' => 'Sh', 'Р©' => 'Sch', 'Р¬' => '\'', 'Р«' => 'Y', 'РЄ' => '\'', 'Р' => 'E', 'Р®' => 'Yu', 'РЇ' => 'Ya', ); $str=strtr($str, $converter); $str = strtolower($str); $str = preg_replace('~[^-a-z0-9_]+~u','.', $str); $str = trim($str, "-"); $str = str_replace(array('.','-','+','=','/'),array('_','_','_','_','_'),$str); $bad_words=array('','price_less','price_more','order_type','order_dir'); $db=JFactory::getDBO(); $query=$db->getQuery(true); $query->select('config')->from('#__ksenmart_seo_config')->where('type="url"'); $db->setQuery($query); $configs=$db->loadObjectList(); foreach($configs as $config) { $config=json_decode($config->config); foreach($config as $c) if ($c->user==1) $bad_words[]=$c->title; } if (in_array($str,$bad_words)) $str.=time(); $tables=array('#__ksenmart_products','#__ksenmart_categories','#__ksenmart_manufacturers','#__ksenmart_countries','#__ksenmart_properties','#__ksenmart_property_values'); foreach($tables as $table) { $query=$db->getQuery(true); $query->select('count(*)')->from($table)->where('alias="'.$str.'"'); $db->setQuery($query); $count=$db->loadResult(); if ($count>0) $str.=time(); } return $str; } function checkAlias($alias,$id=0) { $alias = str_replace(array('.','-','+','=','/'),array('_','_','_','_','_'),$alias); $bad_words=array('price_less','price_more','order_type','order_dir'); $db=JFactory::getDBO(); $query=$db->getQuery(true); $query->select('config')->from('#__ksenmart_seo_config')->where('type="url"'); $db->setQuery($query); $configs=$db->loadObjectList(); foreach($configs as $config) { $config=json_decode($config->config); foreach($config as $c) if ($c->user==1) $bad_words[]=$c->title; } if (in_array($alias,$bad_words)) return ''; $tables=array('#__ksenmart_products','#__ksenmart_categories','#__ksenmart_manufacturers','#__ksenmart_countries','#__ksenmart_properties','#__ksenmart_property_values'); foreach($tables as $table) { $query=$db->getQuery(true); $query->select('count(*)')->from($table)->where('alias="'.$alias.'"'); if ((int)$id!=0) $query->where('id!='.(int)$id); $db->setQuery($query); $count=$db->loadResult(); if ($count>0) return ''; } return $alias; } function showPriceWithoutTransform($price,$currency=0) { if (empty(self::$_currencies)) { $db=JFactory::getDBO(); $query="select * from #__ksenmart_currencies"; $db->setQuery($query); $rows = $db->loadObjectList(); foreach ($rows as $v) { self::$_currencies[$v->id] = $v; if ($v->default == 1 ) { self::$_currencies[0] = $v; } } } $currency = self::$_currencies[$currency]; $price=str_replace('{price}',$price,$currency->template); return $price; } function showPriceWithTransform($price,$currency=0) { if (empty(self::$_currencies)) { $db=JFactory::getDBO(); $query="select * from #__ksenmart_currencies"; $db->setQuery($query); $rows = $db->loadObjectList(); foreach ($rows as $v) { self::$_currencies[$v->id] = $v; if ($v->default == 1 ) { self::$_currencies[0] = $v; } } } $currency = self::$_currencies[$currency]; $price=number_format($price,$currency->fractional,'.',$currency->separator); $price=str_replace('{price}',$price,$currency->template); return $price; } function getPriceInDefaultCurrency($price,$currency) { if (empty(self::$_currencies)) { $db=JFactory::getDBO(); $query="select * from #__ksenmart_currencies"; $db->setQuery($query); $rows = $db->loadObjectList(); foreach ($rows as $v) { self::$_currencies[$v->id] = $v; if ($v->default == 1 ) { self::$_currencies[0] = $v; } } } $currency = self::$_currencies[$currency]; $price=$price/$currency->rate; return $price; } function getPriceInCurrentCurrency($price,$currency) { $app = JFactory::getApplication(); $curr_currency = $app->getUserState('com_ksenmart.curr_currency',0); if (empty(self::$_currencies)) { $db=JFactory::getDBO(); $query="select * from #__ksenmart_currencies"; $db->setQuery($query); $rows = $db->loadObjectList(); foreach ($rows as $v) { self::$_currencies[$v->id] = $v; if ($v->default == 1 ) { self::$_currencies[0] = $v; } } } $currency = self::$_currencies[$currency]; $curr_currency = self::$_currencies[$curr_currency]; $price=$price/$currency->rate*$curr_currency->rate; return $price; } function getPriceInDefaultCurrencyWithTransform($price,$currency) { if (empty(self::$_currencies)) { $db=JFactory::getDBO(); $query="select * from #__ksenmart_currencies"; $db->setQuery($query); $rows = $db->loadObjectList(); foreach ($rows as $v) { self::$_currencies[$v->id] = $v; if ($v->default == 1 ) { self::$_currencies[0] = $v; } } } $currency = self::$_currencies[$currency]; $price=number_format($price,$currency->fractional,'.',$currency->separator); $price=str_replace('{price}',$price,$currency->template); return $price; } function getPriceInCurrency($price,$currency=0) { if (empty(self::$_currencies)) { $db=JFactory::getDBO(); $query="select * from #__ksenmart_currencies"; $db->setQuery($query); $rows = $db->loadObjectList(); foreach ($rows as $v) { self::$_currencies[$v->id] = $v; if ($v->default == 1 ) { self::$_currencies[0] = $v; } } } $currency = self::$_currencies[$currency]; $price=$price*$currency->rate; $price=number_format($price,$currency->fractional,'.',$currency->separator); return $price; } function getCurrencyCode($currency=0) { if (empty(self::$_currencies)) { $db=JFactory::getDBO(); $query="select * from #__ksenmart_currencies"; $db->setQuery($query); $rows = $db->loadObjectList(); foreach ($rows as $v) { self::$_currencies[$v->id] = $v; if ($v->default == 1 ) { self::$_currencies[0] = $v; } } } $currency = self::$_currencies[$currency]; return $currency->code; } function getCurrencyName($currency=0) { if (empty(self::$_currencies)) { $db=JFactory::getDBO(); $query="select * from #__ksenmart_currencies"; $db->setQuery($query); $rows = $db->loadObjectList(); foreach ($rows as $v) { self::$_currencies[$v->id] = $v; if ($v->default == 1 ) { self::$_currencies[0] = $v; } } } $currency = self::$_currencies[$currency]; return $currency->title; } function getShopItemid() { if (self::$_Itemid === null) { $db=JFactory::getDBO(); $query="select * from #__menu where link='index.php?option=com_ksenmart&view=shopcatalog&layout=catalog' and published='1' limit 1"; $db->setQuery($query); $menuitem=$db->loadObject(); if (count($menuitem)>0) self::$_Itemid=$menuitem->id; else self::$_Itemid=''; } return self::$_Itemid; } function getPriceWithDiscount($price,$subscribe=0) { $user=KsenmartHelper::getUser(); $db=JFactory::getDBO(); $percent=0; $rur=0; $where=" and (0"; foreach($user->groups as $group) if ($group!=2 || ($group==2 && $subscribe==2)) $where.=" or user_group like '%|$group|%'"; if ($subscribe==1) $where.=" or user_group like '%|2|%'"; $where.=")"; if(array_key_exists($where, self::$_discounts)){ $discounts = self::$_discounts[$where]; } else { $query="select * from #__ksenmart_discounts where enabled='1' $where"; $db->setQuery($query); $discounts=$db->loadObjectList(); self::$_discounts[$where] = $discounts; } $price=($price-$rur)*(100-$percent)/100; return number_format($price, 2, '.', ''); } function getPriceWithoutDiscount($price,$subscribe=0) { $user=KsenmartHelper::getUser(); $db=JFactory::getDBO(); $percent=0; $rur=0; $where=" and (0"; foreach($user->groups as $group) if ($group!=1 || ($group==1 && $subscribe==2)) $where.=" or user_group like '%|$group|%'"; if ($subscribe==1) $where.=" or user_group like '%|1|%'"; $where.=")"; $price=($price+$rur)*100/(100-$percent); return number_format($price, 2, '.', ''); } function LoadTemplate($tpl) { include(JPATH_ROOT.'/components/com_ksenmart/templates/'.KsenMartHelper::getSettingsValue('template').'/'.$tpl.'.html'); } function getProductRate($id) { $db=JFactory::getDBO(); $rate=new stdClass(); $rate->rate=0; $rate->count=0; $query="select * from #__ksenmart_comments where product='$id'"; $db->setQuery($query); $comments=$db->loadObjectList(); $rate->count=count($comments); if ($rate->count>0) { foreach($comments as $comment) $rate->rate+=$comment->rate; $rate->rate=$rate->rate/$rate->count; } return $rate; } function formatCommentDate($date) { $str_date=''; $date=explode(' ',$date); $date=explode('-',$date[0]); $mon=''; switch($date[1]) { case '01': $mon='января'; break; case '02': $mon='февраля'; break; case '03': $mon='марта'; break; case '04': $mon='апреля'; break; case '05': $mon='мая'; break; case '06': $mon='РёСЋРЅСЏ'; break; case '07': $mon='июля'; break; case '08': $mon='августа'; break; case '09': $mon='сентября'; break; case '10': $mon='октября'; break; case '11': $mon='РЅРѕСЏР±СЂСЏ'; break; case '12': $mon='декабря'; break; } $str_date=$date[2].' '.$mon.' '.$date[0]; return $str_date; } function formatPrintformDate($date) { return date('d.m.Y',strtotime($date)); } function getAddToCartLink() { $params = JComponentHelper::getParams('com_ksenmart'); $Itemid=KsenMartHelper::getShopItemid(); if ($params->get('order_process',0)==1) { $session =& JFactory::getSession(); $order_id=$session->get('shop_order_id',0); if ($order_id==0) $add_link_cart = JRoute::_('index.php?option=com_ksenmart&view=shopopenorder&Itemid='.$Itemid); else $add_link_cart = JRoute::_('index.php?option=com_ksenmart&view=shopopencart&Itemid='.$Itemid); } else $add_link_cart = JRoute::_('index.php?option=com_ksenmart&view=shopopencart&Itemid='.$Itemid); return $add_link_cart; } function sendOrderIndoCustomer($order_id) { $dispatcher = JDispatcher::getInstance(); $db=JFactory::getDBO(); $Itemid=KsenMartHelper::getShopItemid(); $query="select * from #__ksenmart_orders where id='$order_id'"; $db->setQuery($query); $order=$db->loadObject(); $content = ''; $content.='
Р?нформация
Р?РјСЏ: '.$order->name.'
E-mail: '.$order->email.'
Адрес доставки: '.$order->address.'
Заказ
'; $query="select * from #__ksenmart_order_items where order_id='$order_id'"; $db->setQuery($query); $order->items=$db->loadObjectList(); foreach ($order->items as &$item) { $item_properties=array(); $properties=explode(';',$item->properties); foreach($properties as $property) { $property=explode(':',$property); $query="select * from #__ksenmart_properties where id='$property[0]'"; $this->_db->setQuery($query); $prop=$this->_db->loadObject(); if (count($prop)>0) { $item_properties[]=new stdClass(); $item_properties[count($item_properties)-1]->title=$prop->title; if ($prop->type=='select' || $prop->type=='radio') { $query="select * from #__ksenmart_property_values where id='$property[1]'"; $this->_db->setQuery($query); $val=$this->_db->loadObject(); if (count($val)>0) $item_properties[count($item_properties)-1]->value=$val->title.' '.$prop->finishing; } } } $query="select * from #__ksenmart_products where id='$item->product_id'"; $db->setQuery($query); $item->product=$db->loadObject(); $link = JURI::root().JRoute::_('index.php?option=com_ksenmart&view=shopproduct&id='.$item->product->id.":".$item->product->alias.'&Itemid='.$Itemid); $content.=' '; } $order->total_cost=$order->cost; $dispatcher->trigger('onAfterGetOrder',array(&$order)); $results=$dispatcher->trigger('onDisplayAfterLetterContent',array(&$order)); $order->onDisplayAfterLetterContent=trim(implode("\n", $results)); $content.=' '; $content.=$order->onDisplayAfterLetterContent; $content.='
Продукт Кол-во Цена Стоимость
'.$item->product->title.' '; if ($item->product->product_code!='') $content.=' РђСЂС‚. '.$item->product->product_code.''; foreach($item_properties as $item_property) { if (!empty($item_property->value)) $content.='
'.$item_property->title.': '.$item_property->value; else $content.='
'.$item_property->title.''; } $content.='
'.$item->product->introcontent.'
'.$item->count.' '.KsenMartHelper::showPriceWithTransform($item->price).' '.KsenMartHelper::showPriceWithTransform($item->count*$item->price).'
Общая стоимость товаров '.KsenMartHelper::showPriceWithTransform($order->cost).'
Стоимость доставки: '.KsenMartHelper::showPriceWithTransform($order->delivery_cost).'
Р?того '.KsenMartHelper::showPriceWithTransform($order->total_cost+$order->delivery_cost).'
'; $mail =& JFactory::getMailer(); $mail->isHTML(true); $params = JComponentHelper::getParams('com_ksenmart'); $sender = array($params->get('shop_email'), $params->get('shop_name')); $mail->setSender($sender); $mail->Subject = 'Новый заказ №'.$order_id; $mail->Body = $content; $mail->AddAddress($order->email , $order->name); $mail->Send(); } function sendOrderIndoAdmin($order_id) { $dispatcher = JDispatcher::getInstance(); $db=JFactory::getDBO(); $Itemid=KsenMartHelper::getShopItemid(); $query="select * from #__ksenmart_orders where id='$order_id'"; $db->setQuery($query); $order=$db->loadObject(); $content = ''; $content.='
Р?нформация
Р?РјСЏ: '.$order->name.'
E-mail: '.$order->email.'
Адрес доставки: '.$order->address.'
Заказ
'; $query="select * from #__ksenmart_order_items where order_id='$order_id'"; $db->setQuery($query); $order->items=$db->loadObjectList(); foreach ($order->items as &$item) { $item_properties=array(); $properties=explode(';',$item->properties); foreach($properties as $property) { $property=explode(':',$property); $query="select * from #__ksenmart_properties where id='$property[0]'"; $this->_db->setQuery($query); $prop=$this->_db->loadObject(); if (count($prop)>0) { $item_properties[]=new stdClass(); $item_properties[count($item_properties)-1]->title=$prop->title; if ($prop->type=='select' || $prop->type=='radio') { $query="select * from #__ksenmart_property_values where id='$property[1]'"; $this->_db->setQuery($query); $val=$this->_db->loadObject(); if (count($val)>0) $item_properties[count($item_properties)-1]->value=$val->title.' '.$prop->finishing; } } } $query="select * from #__ksenmart_products where id='$item->product_id'"; $db->setQuery($query); $item->product=$db->loadObject(); $link = JURI::root().JRoute::_('index.php?option=com_ksenmart&view=shopproduct&id='.$item->product->id.":".$item->product->alias.'&Itemid='.$Itemid); $content.=' '; } $order->total_cost=$order->cost; $dispatcher->trigger('onAfterGetOrder',array(&$order)); $results=$dispatcher->trigger('onDisplayAfterLetterContent',array(&$order)); $order->onDisplayAfterLetterContent=trim(implode("\n", $results)); $content.=' '; $content.=$order->onDisplayAfterLetterContent; $content.='
Продукт Кол-во Цена Стоимость
'.$item->product->title.' '; if ($item->product->product_code!='') $content.=' РђСЂС‚. '.$item->product->product_code.''; foreach($item_properties as $item_property) { if (!empty($item_property->value)) $content.='
'.$item_property->title.': '.$item_property->value; else $content.='
'.$item_property->title.''; } $content.='
'.$item->product->introcontent.'
'.$item->count.' '.KsenMartHelper::showPriceWithTransform($item->price).' '.KsenMartHelper::showPriceWithTransform($item->count*$item->price).'
Общая стоимость товаров '.KsenMartHelper::showPriceWithTransform($order->cost).'
Стоимость доставки: '.KsenMartHelper::showPriceWithTransform($order->delivery_cost).'
Р?того '.KsenMartHelper::showPriceWithTransform($order->total_cost+$order->delivery_cost).'
'; $mail =& JFactory::getMailer(); $mail->isHTML(true); $params = JComponentHelper::getParams('com_ksenmart'); $sender = array($params->get('shop_email'), $params->get('shop_name')); $mail->setSender($sender); $mail->Subject = 'Новый заказ в„–'.$order_id; $mail->Body = $content; $mail->AddAddress($params->get('shop_email'), $params->get('shop_name')); $mail->Send(); } function incProductHit($id) { $db=JFactory::getDBO(); $query="update #__ksenmart_products set hits=hits+1 where id='$id'"; $db->setQuery($query); $db->query(); } function incProductCarted($id) { $db=JFactory::getDBO(); $query="update #__ksenmart_products set carted=carted+1 where id='$id'"; $db->setQuery($query); $db->query(); } static function number2string($n,$rod) //перевести число $n РІ строку. Число обязательно должно быть 0 < $n < 1000. $rod указывает РЅР° СЂРѕРґ суффикса (0 - женский, 1 - мужской; например, "рубль" - 1, "тысяча" - 0). { $n = round($n%1000); $a = floor($n / 100)*100; $b = floor(($n - $a) / 10)*10; $c = $n % 10; if($b==10){ $b = $b+$c; $c = 0; } $s = ""; switch($a){//сотни case 100: $s = "сто"; break; case 200: $s = "двести"; break; case 300: $s = "триста"; break; case 400: $s = "четыреста"; break; case 500: $s = "пятьсот"; break; case 600: $s = "С?естьсот"; break; case 700: $s = "семьсот"; break; case 800: $s = "восемьсот"; break; case 900: $s = "девятьсот"; break; } $s .= ($s&&$b)?" ":''; switch($b){//десятки case 10: $s .= "десять"; break; case 11: $s .= "одиннадцать"; break; case 12: $s .= "двенадцать"; break; case 13: $s .= "тринадцать"; break; case 14: $s .= "четырнадцать"; break; case 15: $s .= "пятнадцать"; break; case 16: $s .= "С?естнадцать"; break; case 17: $s .= "семнадцать"; break; case 18: $s .= "восемнадцать"; break; case 19: $s .= "девятнадцать"; break; case 20: $s .= "двадцать"; break; case 30: $s .= "тридцать"; break; case 40: $s .= "СЃРѕСЂРѕРє"; break; case 50: $s .= "пятьдесят"; break; case 60: $s .= "С?естьдесят"; break; case 70: $s .= "семьдесят"; break; case 80: $s .= "восемьдесят"; break; case 90: $s .= "девяносто"; break; } $s .= ($s&&$c)?" ":''; switch($c){//единицы case 1: switch($rod){ case 0:$s .= "РѕРґРЅР°";break;//Р¶.СЂ. Р?.Рї. case 1:$s .= "РѕРґРёРЅ";break;//Рј.СЂ. Р?.Рї. case 2:$s .= "РѕРґРЅСѓ";break;//Р¶.СЂ. Р .Рї. case 3:$s .= "РѕРґРёРЅ";break;//Рј.СЂ. Р .Рї. } break; case 2: switch($rod){ case 0:$s .= "РґРІРµ";break;//Р¶.СЂ. Р?.Рї. case 1:$s .= "РґРІР°";break;//Рј.СЂ. Р?.Рї. case 2:$s .= "РґРІРµ";break;//Р¶.СЂ. Р .Рї. case 3:$s .= "РґРІР°";break;//Рј.СЂ. Р .Рї. } break; case 3: $s .= "три"; break; case 4: $s .= "четыре"; break; case 5: $s .= "пять"; break; case 6: $s .= "С?есть"; break; case 7: $s .= "семь"; break; case 8: $s .= "восемь"; break; case 9: $s .= "девять"; break; } return $s; } /** * создает строковое представление СЃСѓРјРјС‹. Например $n = 123. * результат будет "Сто двадцать три рубля 00 копеек" * * @param float $amount * @return string */ static function stringView( $amount ) { //разделить СЃСѓРјРјР° РЅР° разряды: единицы, тысячи, миллионы, миллиарды (больС?Рµ миллиардов РЅРµ проверять
) $n = round($amount,2); $billions = floor($n / 1000000000); $millions = floor( ($n-$billions*1000000000) / 1000000); $grands = floor( ($n-$billions*1000000000-$millions*1000000) / 1000); $roubles = floor( ($n-$billions*1000000000-$millions*1000000-$grands*1000) );//$n % 1000; //копейки $kop = round ( $n*100 - round( floor($n)*100 ) ); //var_dump(array($n,$billions,$millions,$grands,$roubles,$kop)); if ($kop < 10) $kop = "0".(string)$kop; $s = ""; if ($billions > 0) { $t = "ов"; $temp = $billions % 10; if (floor(($billions % 100)/10)!= 1) { if ($temp == 1) $t = ""; else if ($temp >=2 && $temp <= 4) $t = "а"; } $s .= KsenMartHelper::number2string($billions,1)." миллиард{$t} "; } if ($millions > 0) { $t = "ов"; $temp = $millions % 10; if (floor(($millions % 100)/10)!= 1) { if ($temp == 1) $t = ""; else if ($temp >=2 && $temp <= 4) $t = "а"; } $s .= KsenMartHelper::number2string($millions,1)." миллион{$t} "; } if ($grands > 0) { $t = ""; $temp = $grands % 10; if (floor(($grands % 100)/10)!= 1) { if ($temp == 1) $t = "а"; else if ($temp >=2 && $temp <= 4) $t = "и"; } $s .= KsenMartHelper::number2string($grands,0)." тысяч{$t} "; } if ($roubles > 0) { $rub = "ей"; $temp = $roubles % 10; if (floor(($roubles % 100)/10)!= 1) { if ($temp == 1) $rub = "ь"; else if ($temp >=2 && $temp <= 4) $rub = "я"; } $s .= KsenMartHelper::number2string($roubles,1)." рубл{$rub} "; } { $kp = "ек"; $temp = $kop % 10; if (floor(($kop % 100)/10)!= 1) { if ($temp == 1) $kp = "йка"; else if ($temp >=2 && $temp <= 4) $kp = "йки"; } $s .= "{$kop} копе{$kp}"; } /* //теперь сделать первую букву заглавной if ($roubles>0 || $grands>0 || $millions>0 || $billions>0) { $cnt=0; while(substr($s, $cnt, 1)==" ") $cnt++; $s = substr($s, $cnt, 1); $s[$cnt] = chr( ord($s[$cnt])- 32 ); } */ return $s; } function getDiscountString($id) { $db=JFactory::getDBO(); $str=''; $query="select * from #__ksenmart_discounts where id='$id'"; $db->setQuery($query); $discount=$db->loadObject(); if ($discount) { if ($discount->type=='accumulation') { $discount->accumulation=explode(';',$discount->discount); for($i=0;$iaccumulation);$i++) { $discount->accumulation[$i]=explode(':',$discount->accumulation[$i]); $str.=JText::_('from').' '.KsenMartHelper::showPriceWithoutTransform($discount->accumulation[$i][0]).' - '.$discount->accumulation[$i][1].' %
'; } } elseif ($discount->discount_type==0) $str=$discount->discount.'%'; elseif ($discount->discount_type==1) $str=KsenMartHelper::showPriceWithoutTransform($discount->discount); } return $str; } function getShippingDate($shipping_id) { $db=JFactory::getDBO(); $query="select days from #__ksenmart_shippings where id='$shipping_id'"; $db->setQuery($query); $days=$db->loadResult(); $day=date('j',time()+$days*86400); $month=date('m',time()+$days*86400); switch($month) { case '1': $month='января'; break; case '2': $month='февраля'; break; case '3': $month='марта'; break; case '4': $month='апреля'; break; case '5': $month='мая'; break; case '6': $month='июня'; break; case '7': $month='июля'; break; case '8': $month='августа'; break; case '9': $month='сентября'; break; case '10': $month='октября'; break; case '11': $month='ноября'; break; case '12': $month='декабря'; break; } return $day.' '.$month; } function getUser($id='') { if (array_key_exists($id, self::$_user)){ return self::$_user[$id]; } $db=JFactory::getDBO(); $original_id = $id; if ($id==''){ $id=JFactory::getUser()->id; } if ($id!=0) { $query="select * from #__ksenmart_users as ku,#__users as u where u.id=ku.id and ku.id='$id'"; $db->setQuery($query); $user=$db->loadObject(); if ($user->email==$user->username.'@email.ru') $user->email=''; $matches=array(); if (preg_match('/([a-z][a-z])-([0-9]+)/',$user->username,$matches)>0) { $user->social_name=$matches[1]; $user->social=1; } if ($user->groups!='') { $user->groups=str_replace('||',',',$user->groups); $user->groups=str_replace('|','',$user->groups); $user->groups=explode(',',$user->groups); } else $user->groups=array(); if ($user->watched!='') { $user->watched=str_replace('||',',',$user->watched); $user->watched=str_replace('|','',$user->watched); $user->watched=explode(',',$user->watched); } else $user->watched=array(); if ($user->favorites!='') { $user->favorites=str_replace('||',',',$user->favorites); $user->favorites=str_replace('|','',$user->favorites); $user->favorites=explode(',',$user->favorites); } else $user->favorites=array(); if ($user->region==0) { $session=JFactory::getSession(); $user_region=$session->get('user_region',0); $user->region=$user_region; } $tmp=explode('-',$user->phone); if (count($tmp)==3) { $user->phone_country=$tmp[0]; $user->phone_code=$tmp[1]; $user->phone=$tmp[2]; } else { $user->phone_country='+7'; $user->phone_code=''; $user->phone=''; } $user->logo=$user->logo==''?'media/ksenmart/images/users/default.png':$user->logo; } else { $session=JFactory::getSession(); $user_region=$session->get('user_region',0); $user=new stdClass(); $user->id=0; $user->name=''; $user->username=''; $user->email=''; $user->groups=array(); $user->region=$user_region; $user->phone_country='+7'; $user->phone_code=''; $user->phone=''; $user->address=''; $user->money=0; $user->sendmails=''; $query="select * from #__ksenmart_user_fields order by ordering"; $db->setQuery($query); $fields=$db->loadObjectList(); foreach($fields as $field) $user->{'field_'.$field->id}=''; $user->logo='media/ksenmart/images/users/default.png'; } self::$_user[$original_id] = $user; return $user; } private static $_property_values = array(); private static $_images = array(); private static $_images_products_files = array(); function getProduct($id) { $db=JFactory::getDBO(); $params = JComponentHelper::getParams('com_ksenmart'); $query=$db->getQuery(true); $query->select('p.*,f.filename,f.folder,f.params,m.title as manufacturer_title,u.form1 as unit')->from('#__ksenmart_products as p'); $query->join("LEFT","#__ksenmart_files as f on p.id=f.owner_id and f.owner_type='product'"); $query->join("LEFT","#__ksenmart_manufacturers as m on p.manufacturer=m.id"); $query->join("LEFT","#__ksenmart_product_units as u on p.product_unit=u.id"); $query->where('p.id='.$id); $query->order('f.ordering'); $query->group('p.id'); $db->setQuery($query); $row=$db->loadObject(); if ($row && !empty($row)) { $row->categories=array(); $query=$db->getQuery(true); $query->select('category_id')->from('#__ksenmart_products_categories')->where('product_id='.$id); $db->setQuery($query); $categories=$db->loadObjectList(); foreach($categories as $cat) $row->categories[]=$cat->category_id; $row->properties = array(); if (count($row->categories)>0) { $query = $db->getQuery(true); $query->select('p.*') ->from('#__ksenmart_properties as p') ->join('inner', '#__ksenmart_product_categories_properties as cp on cp.property_id=p.id') ->where('cp.category_id in('.implode(', ', $row->categories).')'); $db->setQuery($query); $row->properties = $db->loadObjectList('id'); foreach ($row->properties as &$p) { $p->values = array(); } if (!empty($row->properties)){ $in = array_keys($row->properties); $query = $db->getQuery(true); $query->select('ppv.*,pv.title') ->from('#__ksenmart_product_properties_values as ppv') ->join('inner','#__ksenmart_property_values as pv on pv.id=ppv.value_id') ->where('ppv.product_id='.$id) ->where('ppv.property_id in ('.implode(', ', $in). ')'); $db->setQuery($query); $values = $db->loadObjectList(); foreach ($values as $v) { if (isset($row->properties[$v->property_id])) { $row->properties[$v->property_id]->values[$v->value_id] = $v; } } } } if (empty($row->folder)) $row->folder='products'; if (empty($row->filename)) $row->filename='no.jpg'; $query=$db->getQuery(true); $query->select('count(id)')->from('#__ksenmart_products'); $query->where('parent_id='.$row->id); $db->setQuery($query); $row->is_parent=$db->loadResult(); if ($row->product_packaging==0) $row->product_packaging=1; if (round($row->product_packaging)/$row->product_packaging==1) $row->product_packaging=round($row->product_packaging); $row->link = JRoute::_('index.php?option=com_ksenmart&view=shopproduct&id='.$row->id.':'.$row->alias); $row->price=KsenMartHelper::getPriceInDefaultCurrency($row->price,$row->price_type); $row->val_price_wou = KsenMartHelper::getPriceWithDiscount($row->price,2); if ($row->val_price_wou<0) $row->val_price_wou=0; $row->val_price = KsenMartHelper::showPriceWithTransform($row->val_price_wou); $row->old_price=KsenMartHelper::getPriceInDefaultCurrency($row->old_price,$row->price_type); $row->val_old_price_wou = KsenMartHelper::getPriceWithDiscount($row->old_price,2); if ($row->val_old_price_wou<0) $row->val_old_price_wou=0; $row->val_old_price = KsenMartHelper::showPriceWithTransform($row->val_old_price_wou); $row->val_diff_price_wou=$row->val_old_price_wou-$row->val_price_wou; $row->val_diff_price = KsenMartHelper::showPriceWithTransform($row->val_diff_price_wou); $row->mini_small_img=KsenMartHelper::createProductThumb($row->filename,$row->folder,$params->get('mini_thumb_width'),$params->get('mini_thumb_height')); $row->mini_small_img_div_style=KsenMartHelper::getThumbDivStyle($params->get('mini_thumb_width'),$params->get('mini_thumb_height')); $row->mini_small_img_img_style=KsenMartHelper::getThumbImgStyle($params->get('mini_thumb_width'),$params->get('mini_thumb_height'),json_decode($row->params,true),$row->mini_small_img); $row->small_img=KsenMartHelper::createProductThumb($row->filename,$row->folder,$params->get('thumb_width'),$params->get('thumb_height')); $row->small_img_div_style=KsenMartHelper::getThumbDivStyle($params->get('thumb_width'),$params->get('thumb_height')); $row->small_img_img_style=KsenMartHelper::getThumbImgStyle($params->get('thumb_width'),$params->get('thumb_height'),json_decode($row->params,true),$row->small_img); $row->img=KsenMartHelper::createProductThumb($row->filename,$row->folder,$params->get('middle_width'),$params->get('middle_height')); if (!empty($row->folder)) $row->img_link = JURI::root().'media/ksenmart/images/'.$row->folder.'/original/'.$row->filename; else $row->img_link = JURI::root().'media/ksenmart/images/products/no.jpg'; $row->add_link_cart = KsenMartHelper::getAddToCartLink($row->price,2); } return $row; } function getProductManufacturer($id) { $params = JComponentHelper::getParams('com_ksenmart'); $db = JFactory::getDbo(); $query=$db->getQuery(true); $query->select('m.*,f.filename,f.folder')->from('#__ksenmart_manufacturers as m'); $query->join("LEFT","#__ksenmart_files as f on m.id=f.owner_id and f.owner_type='manufacturer'"); $query->where('m.id='.$id); $db->setQuery($query); $row=$db->loadObject(); if (count($row)>0) { if ($row->filename!='') $row->img=JURI::root().'media/ksenmart/images/'.$row->folder.'/original/'.$row->filename; $query=$db->getQuery(true); $query->select('*')->from('#__ksenmart_countries'); $query->where('id='.$row->country); $db->setQuery($query); $row->country=$db->loadObject(); } return $row; } private static $_products_properties = array(); private static $_products_properties_idx = array(); public static function fetchProductProperties($product){ if (empty(self::$_products_properties)){ $db = JFactory::getDbo(); $db->setQuery( "select kp.*, kpp.value, kpp.product, kpp.price,kpp.count,kpp.code FROM #__ksenmart_properties AS kp, #__ksenmart_product_properties AS kpp where kp.id = kpp.property_id AND kp.type != 'checkbox' AND kp.filter_count >0 AND kp.in_filter =1 AND kpp.value != '' ORDER BY kp.ordering" ); self::$_products_properties = $db->loadObjectList('id'); foreach (self::$_products_properties as $k=>$v){ self::$_products_properties_idx[$k] = $v->product; } } $search = $product->id; $keys = array_keys(self::$_products_properties_idx, $search); $ret = array(); if (!empty($keys)){ foreach ($keys as $k){ $ret[] = self::$_products_properties[$k]; } } return $ret; } function getCouponDiscount($price,$coupon_id) { $db=JFactory::getDBO(); $diff=0; $price_with_discount=0; $query="select * from #__ksenmart_discounts where id='$coupon_id'"; $db->setQuery($query); $discount=$db->loadObject(); if (count($discount)>0) { if ($discount->discount_type==1) $price_with_discount=$price-$discount->discount; else $price_with_discount=round($price*(100-$discount->discount)/100,2); $diff=$price-$price_with_discount; } return $diff; } function updateOrderGroupDiscount($order_id) { $db=JFactory::getDBO(); $query="select * from #__ksenmart_order_items where order_id='$order_id'"; $db->setQuery($query); $order_items=$db->loadObjectList(); $group_discount=0; foreach($order_items as $order_item) { //$group_discount+=($order_item->price-KsenMartHelper::getPriceWithDiscount($order_item->price,2))*$order_item->count; $group_discount+=(KsenMartHelper::getPriceWithoutDiscount($order_item->price,2)-$order_item->price)*$order_item->count; } $query="update #__ksenmart_orders set group_discount='$group_discount' where id='$order_id'"; $db->setQuery($query); $db->Query(); } function generateCode($length) { $arr = array('q', 'w', 'e', 'r', 't', 'y', 'u', 'i', 'o', 'p', 'a', 's', 'd', 'f', 'g', 'h', 'j', 'k', 'l', 'z', 'x', 'c', 'v', 'b', 'n', 'm', 'Q', 'W', 'E', 'R', 'T', 'Y','U', 'I', 'O', 'P', 'A', 'S', 'D', 'F', 'G', 'H', 'J', 'K', 'L', 'Z', 'X', 'C', 'V', 'B', 'N', 'M', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9'); $password = ''; for ($i = 0; $i < $length; $i++) { $index = rand(0, count($arr) - 1); $password .= $arr[$index]; } return $password; } private static $_categories = array(); private static $_categories_children = array(); public function getChildrenCategories($id) { if (empty(self::$_categories)) { $db = JFactory::getDbo(); $db->setQuery("select * from #__ksenmart_categories where published=1 order by parent, ordering "); self::$_categories = $db->loadObjectList('id'); $top_parent = (object) array( 'id'=>0, 'children'=>array() ); self::$_categories_children = array($top_parent); foreach (self::$_categories as $k=>$v){ $v->children = array(); self::$_categories_children[$k] = $v; self::$_categories_children[$v->parent]->children[$k] = $v; } } $ret = array(); $category = self::$_categories_children[$id]; if (!empty($category->children)){ $ret = array_merge($ret, array_keys($category->children)); foreach ($category->children as $child){ $ret = array_merge($ret, self::getChildrenCategories($child->id)); } } return $ret; } public static function createProductThumb($file,$folder, $width=0, $heigth=0,$iparams=array()) { $params = JComponentHelper::getParams('com_ksenmart'); if (!isset($iparams['displace'])) $iparams['displace']=$params->get('displace',0); if (!isset($iparams['watermark'])) $iparams['watermark']=$params->get('watermark',0); if (!isset($iparams['halign'])) $iparams['halign']=$params->get('halign','center'); if (!isset($iparams['valign'])) $iparams['valign']=$params->get('valign','middle'); $dst_file=basename($file); foreach($iparams as $iparam) $dst_file=$iparam.'-'.$dst_file; if (!class_exists('SimpleImage')){ require dirname(__FILE__).DS.'image.php' ; } if ($width === 0) { $width = $params->get('thumb_width'); } if ($heigth === 0 ) { $heigth = $params->get('thumb_height'); } $dst_path_segments = array('media','ksenmart', 'images', $folder, 'w'.$width.'x'.'h'.$heigth); $dst_path = JPATH_ROOT ; foreach ($dst_path_segments as $v){ $dst_path .= DS.$v; if (!JFolder::exists($dst_path)) { JFolder::create($dst_path); chmod($dst_path,0777); } } ($file != '')? $dst_filename = $dst_path.DS.$dst_file: $dst_filename = $dst_path.DS.'no.jpg'; if (!JFile::exists($dst_filename)) { if ($file != '') { $src_filename = JPATH_ROOT.DS.'media'.DS.'ksenmart'.DS.'images'.DS.$folder.DS.'original'.DS.basename($file); } else { $src_filename = JPATH_ROOT.DS.'media'.DS.'ksenmart'.DS.'images'.DS.$folder.DS .'no.jpg'; } if (!JFile::exists($src_filename)){ $src_filename = JPATH_ROOT.DS.'media'.DS.'ksenmart'.DS.'images'.DS.$folder.DS .'no.jpg'; } $image = new SimpleImage($src_filename); if ($image->get_width()>$width || $image->get_height()>$heigth) { $ratio_in = $image->get_width()/$image->get_height(); if ($iparams['displace']==0) { $ratio_out = $width/$heigth; if ($ratio_in>$ratio_out){ $image->resize((int)$width*$ratio_in, $heigth); } else { $image->resize($width, $width/$ratio_in); } } else { if ($width/$ratio_in>$heigth) $image->resize($heigth*$ratio_in, $heigth); else $image->resize($width, $width/$ratio_in); } } //$image->best_fit($size['w'], $size['h']); if (false) { //$wmimage = new SimpleImage(JPATH_ROOT.DS.'images'.DS.'ksenmart'.DS.'watermark.png') ; //$ratio = $image->get_width()/$wmimage->get_width(); //$wmimage->resize($image->get_width(), (int)$wmimage->get_height()*$ratio); //$wmimage->save($dst_path.DS.'watermark.png'); //TODO: сделать параметры, задаваемые в админке //$image->overlay($dst_path.DS.'watermark.png', 'bottom', 0.7); ///$image->overlay(JPATH_ROOT.DS.'images'.DS.'ksenmart'.DS.'watermark.png'); } $image->save($dst_filename); } return JURI::root(). str_replace(JPATH_ROOT.DS, '', $dst_filename); } function getThumbDivStyle($width=0,$heigth=0) { $params = JComponentHelper::getParams('com_ksenmart'); if ($width === 0) { $width = $params->get('thumb_width'); } if ($heigth === 0 ) { $heigth = $params->get('thumb_height'); } $style=array(); $style[]='width:'.$width.'px!important'; $style[]='height:'.$heigth.'px!important'; $style[]='overflow:hidden!important'; $style[]='display:inline-block!important'; return implode(';',$style); } function getThumbImgStyle($width=0,$heigth=0,$iparams=array(),$img) { $params = JComponentHelper::getParams('com_ksenmart'); if (!isset($iparams['displace'])) $iparams['displace']=$params->get('displace',0); if (!isset($iparams['watermark'])) $iparams['watermark']=$params->get('watermark',0); if (!isset($iparams['halign'])) $iparams['halign']=$params->get('halign','center'); if (!isset($iparams['valign'])) $iparams['valign']=$params->get('valign','middle'); if ($width === 0) { $width = $params->get('thumb_width'); } if ($heigth === 0 ) { $heigth = $params->get('thumb_height'); } $sizes=getimagesize($img); switch ($iparams['halign']) { case 'left':$marginL=0;break; case 'center':$marginL=round(($width-$sizes[0])/2);break; case 'right':$marginL=round($width-$sizes[0]);break; } switch ($iparams['valign']) { case 'top':$marginT=0;break; case 'middle':$marginT=round(($heigth-$sizes[1])/2);break; case 'bottom':$marginT=round($heigth-$sizes[1]);break; } $style=array(); $style[]='margin-left:'.$marginL.'px!important'; $style[]='margin-top:'.$marginT.'px!important'; return implode(';',$style); } } ?>addItem('','index.php?option=com_ksenmart'); } public static function getInstance() { if (empty(self::$instance)) { $instance = new KsenMartPath(); self::$instance = & $instance; } return self::$instance; } function addItem($text='',$link='') { $this->path_items[]=array('text'=>$text,'link'=>$link); } } ?>getQuery(true); $query->select('manifest_cache')->from('#__extensions')->where('name="ksenmart"'); $db->setQuery($query); $manifest=$db->loadResult(); $manifest=json_decode($manifest,true); return $manifest[$key]; } function saveSetting($key='',$val='') { $db=JFactory::getDBO(); $query=$db->getQuery(true); $query->select('params')->from('#__extensions')->where('name="ksenmart"'); $db->setQuery($query); $params = json_decode($db->loadResult(),true); if (isset($params[$key])) { $params[$key]=$val; $query=$db->getQuery(true); $query->update('#__extensions')->set('params='.$db->quote(json_encode($params)))->where('name="ksenmart"'); $db->setQuery($query); $db->Query(); } } } ?>setQuery($query); $db->Query(); $k++; } } function resizeComponents() { $db=JFactory::getDBO(); $component_size=JRequest::getVar('component_size'); foreach($component_size as $component) { $query="update #__ksenmart_components set size='$component[1]' where id='$component[0]'"; $db->setQuery($query); $db->Query(); } } function getComponents() { $db=JFactory::getDBO(); $component_type=JRequest::getVar('component_type','trade'); $query="select kc.* from #__ksenmart_components as kc,#__ksenmart_component_types as kct where kct.name='$component_type' and kc.type=kct.id and kc.panel=1 and kc.published=1 order by ordering"; $db->setQuery($query); $components=$db->loadObjectList(); for($i=0;$iname.'.png')) $components[$i]->image=JURI::root().'/media/ksenmart/images/icons/'.$components[$i]->name.'.png'; else $components[$i]->image=JURI::root().'/media/ksenmart/images/icons/module.png'; } return $components; } } ?>setQuery($query); $total=$db->loadResult(); $query="select kp.*,(select file from #__ksenmart_images where owner_type=kp.type and owner_id=kp.id order by ordering limit 1) as image from #__ksenmart_products as kp where 1 $where order by kp.$params[sort_type] $params[sort_dir] limit $params[limitstart],$params[limit]"; $db->setQuery($query); $products=$db->loadObjectList(); for($k=0;$ktype}s/"; $products[$k]->val_price = KsenMartHelper::getPriceInDefaultCurrencyWithTransform($products[$k]->price,$products[$k]->price_type); $products[$k]->val_price_wou = KsenMartHelper::getPriceInDefaultCurrency($products[$k]->price,$products[$k]->price_type); $products[$k]->img = $IMG_CONNETC."30_30/".$products[$k]->image; } } } ?>get('license'); return self::curlResponse(self::UPDATE_SERVER.'?action=check_license&license='.$params->get('license','').'&domen='.$_SERVER['HTTP_HOST']); } function checkUpdates() { $db=JFactory::getDBO(); $core_newest_version=self::curlResponse(self::UPDATE_SERVER.'?action=get_last_version&type=core&name=ksenmart'); $core_current_version=KMCommonFunctions::getManifest('version'); if ($core_newest_version!=$core_current_version) return true; $query="select name,version from #__ksenmart_components"; $db->setQuery($query); $components=$db->loadObjectList(); foreach($components as $component) { $component_newest_version=self::curlResponse(self::UPDATE_SERVER.'?action=get_last_version&type=component&name='.$component->name); if ($component->version!=$component_newest_version) return true; } $query="select name,version from #__ksenmart_modules"; $db->setQuery($query); $modules=$db->loadObjectList(); foreach($modules as $module) { $module_newest_version=self::curlResponse(self::UPDATE_SERVER.'?action=get_last_version&type=module&name='.$module->name); if ($module->version!=$module_newest_version) return true; } return false; } function getUpdates() { $db=JFactory::getDBO(); $updates=array(); $core_newest_version=self::curlResponse(self::UPDATE_SERVER.'?action=get_last_version&type=core&name=ksenmart'); $core_current_version=KMCommonFunctions::getManifest('version'); if ($core_newest_version!=$core_current_version) $updates[]=array('type'=>'core','name'=>'ksenmart','current_version'=>$core_current_version,'new_version'=>$core_newest_version); $query="select name,version from #__ksenmart_components"; $db->setQuery($query); $components=$db->loadObjectList(); foreach($components as $component) { $component_newest_version=self::curlResponse(self::UPDATE_SERVER.'?action=get_last_version&type=component&name='.$component->name); if ($component->version!=$component_newest_version) $updates[]=array('type'=>'component','name'=>$component->name,'current_version'=>$component->version,'new_version'=>$component_newest_version); } $query="select name,version from #__ksenmart_modules"; $db->setQuery($query); $modules=$db->loadObjectList(); foreach($modules as $module) { $module_newest_version=self::curlResponse(self::UPDATE_SERVER.'?action=get_last_version&type=module&name='.$module->name); if ($module->version!=$module_newest_version) $updates[]=array('type'=>'module','name'=>$module->name,'current_version'=>$module->version,'new_version'=>$module_newest_version); } return $updates; } function updatePart($component,$active) { if ($component!='') { $db=JFactory::getDBO(); $query="select value from #__ksenmart_settings where name='update_parts'"; $db->setQuery($query); $update_parts=$db->loadResult(); if ($active==1) $update_parts.=$component.';'; else $update_parts=str_replace($component.';','',$update_parts); $query="update #__ksenmart_settings set value='$update_parts' where name='update_parts'"; $db->setQuery($query); $db->query(); } } function downloadUpdateKsenmart() { $params = JComponentHelper::getParams('com_ksenmart'); $license = $params->get('license'); $postdata = http_build_query( array( 'versions' => KMUpdaterFunctions::serializeVersions() ) ); $update=self::curlResponse(self::UPDATE_SERVER.'?action=get_update&license='.$license.'&domen='.$_SERVER['HTTP_HOST'],$postdata); if ($update!='false') { header("Content-type: application/zip"); header("Content-Disposition: attachment; filename=update".date('-Y-m-d-H-i-s').".zip"); echo $update; } return false; } function updateKsenmart() { $params = JComponentHelper::getParams('com_ksenmart'); $license = $params->get('license'); $postdata = http_build_query( array( 'versions' => KMUpdaterFunctions::serializeVersions() ) ); $updates_dir=JPATH_COMPONENT.'/tmp/updates/'; $update=self::curlResponse(self::UPDATE_SERVER.'?action=get_update&license='.$license.'&domen='.$_SERVER['HTTP_HOST'],$postdata); if ($update!='false') { JFolder::delete($updates_dir); JFolder::create($updates_dir,0777); $update_zip=$updates_dir.'update'.date('-Y-m-d-H-i-s').'.zip'; file_put_contents($update_zip,$update); $zip = new ZipArchive; $result = JArchive::extract(JPath::clean($update_zip), JPath::clean($updates_dir)); if (file_exists($update_zip)) unlink($update_zip); $updates=scandir($updates_dir); foreach($updates as $update) { if ($update!='.' && $update!='..') { $update_dir=str_replace('.zip','',$update); JFolder::create($updates_dir.$update_dir,0777); $result = JArchive::extract($updates_dir.$update, $updates_dir.$update_dir); if (file_exists($updates_dir.$update_dir.'/install.php')) include($updates_dir.$update_dir.'/install.php'); JFolder::delete($updates_dir.$update_dir); if (file_exists($updates_dir.$update)) unlink($updates_dir.$update); } } } return false; } function serializeVersions() { $db=JFactory::getDBO(); $versions['ksenmart']=KMCommonFunctions::getSettingsValue('version'); $query="select name,version from #__ksenmart_components"; $db->setQuery($query); $components=$db->loadObjectList(); foreach($components as $component) $versions[$component->name]=$component->version; $query="select name,version from #__ksenmart_modules"; $db->setQuery($query); $modules=$db->loadObjectList(); foreach($modules as $module) $versions[$module->name]=$module->version; return serialize($versions); } function updateComponentVersion($component,$version) { $db=JFactory::getDBO(); $query="update #__ksenmart_components set version='$version' where name='$component'"; $db->setQuery($query); $db->query(); } public static function sendShopEmail() { $params = JCompon