getPath( 'front_html' ));
require_once( $mainframe->getPath( 'class' ) );
require_once("$mosConfig_absolute_path/includes/irbis_api/lib/jwrapper.php");
$basepath="$mosConfig_absolute_path/components/com_bexhibition";
DEFINE('COVERS_PATH',"$mosConfig_absolute_path/images/covers");
DEFINE('COVERS_URL_PATH',"$mosConfig_live_site/images/covers");
DEFINE('COMPONENT_URL_PATH',"$mosConfig_live_site/components/com_bexhibition");
DEFINE('IMAGE_X',320+100);
DEFINE('IMAGE_Y',584);
DEFINE('THUMB_X',104);
DEFINE('THUMB_Y',146);
/* Параметры:
название выставки,
базы данных,
запрос,
формат заголовка,
максимальное количество выводимых документов
необходимость вывода гиперссылок -- оглавления,
*/
$task = mosGetParam( $_REQUEST, 'task', '' );
//
$header_tags=<<
H;
$mainframe->addCustomHeadTag($header_tags);
if (empty($params['bases']))
mosErrorAlert('Необходимо заполнить поле "Базы-источники записей" в параметрах компонента!');
//$script_url="$mosConfig_live_site/index.php?com_passreq&Itemid=".$Itemid;
//http://localhost/Joomla/index.php?option=com_passreq&Itemid=1492
switch( $task ) {
case 'upload':
upload();
break;
//Показ списка
default:
bo_list();
break;
}
function upload(){
global $gid,$params;
if ($gid<2) {
show::message('Недопустимый уровень доступа! Повторите авторизацию!');
return;
}
if (!@$_REQUEST['base']){
show::message('Нет данных. Повторите операцию загрузки.');
return;
}
$irb=new jwrapper();
try{
$uf=new irb_upload($_FILES['image'],$irb,$_REQUEST['base'],$_REQUEST['mfn'],$_REQUEST['code'],$params['url_prefix'],0);
$uf->check('jpeg|gif|bmp|jpg|png');
$uf->convert_and_move_cover_image();
$uf->wite_to_irbis('cover');
/*header( 'Cache-Control: no-store, no-cache, must-revalidate' );
header( 'Cache-Control: post-check=0, pre-check=0', false );
header( 'Pragma: no-cache' ); */
bo_list(false);
}catch (Exception $e){
show::message($e->getMessage().'('.$e->getCode().')');
}
}
function bo_list($cache=true){
global $basepath,$params,$mosConfig_absolute_path;
$irb=new jwrapper();
$pft=file_get_contents($basepath.'/output_format.pft');
$rep_array['header_format']=($params['header_format']) ? $params['header_format'] : '\'-\'';
$rep_array['format']=$params['output_format'] ? "&uf('6".$params['output_format']."')" : file_get_contents($basepath.'/fullwebr_be.pft');
$rep_array['ed_reference']=file_get_contents("$mosConfig_absolute_path/!irbis/Common_PFT/ed_reference.pft");
$pft=u::parse_pft($pft,$rep_array);
$pft=u::clean_pft_comments($pft);
/* @var $irb iserver64 */
$res=$irb->search_list($params['bases'],$params['req'],'',$pft,$params['max_portion'],1,($cache ? $params['expired'] : 0));
if (!$res){
show::message('Литература по запросу не найдена.');
return;
}
if ($res<0 ){
show::message('Ошибка при работе с интерфейсом к БД: '.$irb->get_last_error_message().'('.$res.')');
return;
}
$res=str_replace('>','',$res);
$res=str_replace('&','&',$res);
$res=ascii_to_entities($res);
$doc = new DOMDocument();
$doc->loadXML(" \n $res \n ");
$records=$doc->getElementsByTagName('record');
for($d=0;$d<$records->length;$d++){
$record=$records->item($d);
$sortkey=$record->getElementsByTagName('sortkey')->item(0)->nodeValue;
$titles=$record->getElementsByTagName('title');
for($i=0;$i<$titles->length;$i++){
$keys[]=u::utf_win($titles->item($i)->nodeValue.' ***'.$sortkey.'***'.$d);
}
$bo_records[$d]=new stdClass();
$bo_records[$d]->mfn=$record->getElementsByTagName('mfn')->item(0)->nodeValue;
$bo_records[$d]->code=u::utf_win($record->getElementsByTagName('code')->item(0)->nodeValue);
$bo_records[$d]->bo=del_links(u::utf_win($record->getElementsByTagName('bo')->item(0)->nodeValue));
$bo_records[$d]->referings=u::utf_win($record->getElementsByTagName('referings')->item(0)->nodeValue);
$bo_records[$d]->cover_url=$record->getElementsByTagName('cover_url')->item(0)->nodeValue;
$bo_records[$d]->base=$record->getElementsByTagName('base')->item(0)->nodeValue;
}
if (empty($keys)){
show::message('Ошибка в формате или некорректные данные в записи. Не удаётся интерпретировать XML. ');
return;
}
$list_struct_array=u::list_struct_keys($keys,$bo_records);
show::bo_list(strtoupper($params['exhibition_title']),$list_struct_array);
//print_r($list_struct_array);
}
function del_links($res){
return preg_replace(array('{<--}','{-->}','{]*>|}xsi'),'',$res);
}
function ascii_to_entities($str)
{
$count = 1;
$out = '';
$temp = array();
for ($i = 0, $s = strlen($str); $i < $s; $i++)
{
$ordinal = ord($str[$i]);
if ($ordinal < 128)
{
$out .= $str[$i];
}
else
{
if (count($temp) == 0)
{
$count = ($ordinal < 224) ? 2 : 3;
}
$temp[] = $ordinal;
if (count($temp) == $count)
{
$number = ($count == 3) ? (($temp['0'] % 16) * 4096) + (($temp['1'] % 64) * 64) + ($temp['2'] % 64) : (($temp['0'] % 32) * 64) + ($temp['1'] % 64);
$out .= ''.$number.';';
$count = 1;
$temp = array();
}
}
}
return $out;
}
?>