Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Помогите разобраться с кодом


Автор: slnes 30.3.2011, 13:52
Помогите разобраться в коде (обрезал что бы меньше было).
Где выводиться страница (присваивается переменная $info['scp'])  при первом входе (когда в адресной строке www.чегото.ru) ?
В данный момент при первом входе вставляется поле "pgs_text" (содержит HTML код) из БД "_DB_PGS"  где поле "pgs_id"=1
Хочу при первом входе  переменную $info['scp']=qw, т.е. вызвыть функцию qw.
Куда и что добавить в код? (может кому то он уже знаком).


Код


function callback($buffer){
  global $info;
  $buffer = eregi_replace("%TITLE%", $info['title'], $buffer);
  $buffer = eregi_replace("%CAPTION%", $info['caption'].$info['caption_postfix'], $buffer);
  $buffer = eregi_replace("%CSS%", $info['css'], $buffer);
  $buffer = eregi_replace("%SCRIPT%", $info['script'], $buffer);
  $buffer = eregi_replace("%ADMIN_MENU%", $info['admin_menu'], $buffer);
  return $buffer;
}
ob_start("callback");

session_name("session");
session_start();

$db = new DB(_DB_HOST, _DB_USER, _DB_PASS, _DB_BASE);
$db->connect();

$info = array();
$info['title'] = '';
$info['caption'] = '';
$info['caption_postfix'] = '';
$info['css'] = '';
$info['script'] = '';
$info['index'] = "(index.(asp|php|htm|html)/)?";

$info['id'] = 0;
$s = isset($_SERVER['REDIRECT_URL']) ? $_SERVER['REDIRECT_URL'] : '/';
if ($s[strlen($s)-1]!='/') $s .= '/';
$info['URL'] = $s;
$info['scp'] = '';

$info['menu']['multilevel'] = true; require "menu.php";

if (eregi("^/".$info['index']."$", $info['URL'], $regs)){
  $ShowPage = 'ShowPageMain';
  $ShowPage();
}elseif (eregi("^/search/google.html/$", $info['URL'], $regs)) {
  $info['scp'] = "Google";
}else {
  SCP();
}
if (empty($info['scp'])) $info['scp'] = 'scp404';


function ShowPageMain(){
global $db, $info;
  $res = $db->query("SELECT * FROM "._DB_MNS." WHERE mns_owner='0' ORDER BY mns_row;");
  if ($row = $db->next_row($res)){
    $s = LinkMenu2URL($row['mns_link_type'], $row['mns_link_value']);
    if (($s != '/') and ($s != '')) go2page($s);
    else $ShowPage = 'scp404';
  } else $ShowPage = 'scp404';
}


function _end_(){
  global $info;
  $info['title'] .= ". ".strip_tags($info['caption']);
  ob_end_flush();
}


function SCP(){
  global $info;
  foreach ($info['_SCP'] as $k => $v):
    if ($v()) break;
  endforeach;
}


function Setup(){
  global $info;
  foreach ($info['_SETUP'] as $k => $v):
    $v();
  endforeach;
  go2page('/');
}


function Google(){ удалил что бы кода меньше было}



$info['_STR']['404'] = array(
'Caption' => 'Ошибка 404 — страница не найдена',
'PageNotFound' => 'Страница, которую вы пытаетесь открыть, не существует',
'GoTo' => 'Перейдите ',
'MainPage' => 'на главную страницу',
'' => ''
);

if (isset($info['_STR_LANG']['404']))
  $info['_STR']['404'] += $info['_STR_LANG']['404'];


function scp404(){
  global $info;
  $info['caption'] = $info['_STR']['404']['Caption'];
?>
<p><?=$info['_STR']['404']['PageNotFound'];?>.
<p><?=$info['_STR']['404']['GoTo'];?><a href='/'><?=$info['_STR']['404']['MainPage'];?></a>.</p>
<?
}




$info['_STR']['settings'] = array(
'LanguageDB' => 'all',
'' => ''
);
if (isset($info['_STR_LANG']['settings'])) $info['_STR']['settings'] += $info['_STR_LANG']['settings'];

define("_DB_SET", _DB_PREFIX.$info['_STR']['settings']['LanguageDB'].'_'.'settings');

function SettingsGet($name){
  global $db, $info;
  $sql = "SELECT set_value FROM "._DB_SET." WHERE set_name='".dab($name)."';";
  $res = $db->query($sql);
   if ($row = $db->next_row($res)) return $row['set_value'];
   else return '';
}

function SettingsGetList($names){
  global $db, $info;
  $str = '';
  $array = array();

function SettingsGetList($names){
  global $db, $info;
  $str = '';
  $array = array();
  foreach ($names as $v):
    $array[$v] = '';
    if ($str != '') $str .= ' OR ';
    $str .= "set_name='".dab($v)."'";
  endforeach;
  $sql = "SELECT set_name, set_value FROM "._DB_SET." WHERE $str;";
  $res = $db->query($sql);
  while ($row = $db->next_row($res)) $array[$row['set_name']] = $row['set_value'];
  return $array;
}

function SettingsSet($name, $value){
  global $db, $info;
  $db->query("UPDATE "._DB_SET." SET set_value='".dab($value)."' WHERE set_name='".dab($name)."';");
}

function SettingsSetList($names_values){
  foreach ($names_values as $name => $value) SettingsSet($name, $value);
}


$info['_STR']['pages'] = array(
'LanguageDB' => 'ru',
'Pages' => 'Страницы',
'AdminPagesNone' => 'Страниц сайта нет',
'AdminPages' => 'Администрирование страничек',
'AdminPagesMenu' => 'Страницы',
'AdminPagesMenuList' => 'Список страниц',
'AdminPagesMenuAdd' => 'Добавить страницу',
'AdminPagesListCPP1' => 'При администрировании показывать на странице по',
'AdminPagesListCPP2' => 'страничек',
'AdminPagesListCPPok' => 'OK',
'AdminPagesCaption' => 'Заголовок',
'AdminPagesUrl' => 'Ссылка на страницу',
'AdminPagesAction' => '&nbsp;',
'AdminPagesEdit' => 'Редактировать',
'AdminPagesShow' => 'Опубликовать',
'AdminPagesHide' => 'Скрыть',
'AdminPagesDelete' => 'Удалить',
'AdminPagesDeleteSelect' => 'Удалить выбранные страницы',
'AdminPagesConfirmDelete' => 'Вы действительно хотите удалить страницу?\nАвтоматически удалится и пункт меню,\nсвязанный с этой страницей (если он есть).\nВосстановление будет невозможно!',
'AdminPagesConfirmDeleteAll' => 'Вы действительно хотите удалить выбранные страницы?\nАвтоматически удалятся и пункты меню,\nсвязанные с этими страницами (если они есть).\nВосстановление будет невозможно!',
'AdminPagesCaptionEdit' => 'Редактирование страницы',
'AdminPagesCaptionAdd' => 'Добавление страницы',
'AdminPagesAddEditShowing' => 'Опубликование:',
'AdminPagesAddEditShow' => 'отображать на сайте',
'AdminPagesAddEditHide' => 'не опубликовывать на сайте',
'AdminPagesAddEditCaption' => 'Заголовок:',
'AdminPagesAddEditUrl' => 'Ссылка:',
'AdminPagesAddEditUrlAbout' => 'Ссылка — необязательный параметр, он нужен для создания которких понятных адресов страниц. Например, <u>/<b>contacts</b>.html</u>.',
'AdminPagesAddEditText' => 'Текст страницы:',
'AdminPagesAddEditSave' => 'Сохранить'
);

if (isset($info['_STR_LANG']['pages']))
  $info['_STR']['pages'] += $info['_STR_LANG']['pages'];

define("_DB_PGS", _DB_PREFIX.$info['_STR']['pages']['LanguageDB'].'_'.'pages');

$info['_SCP']['pages'] = 'scpPages';

[color=red]function scpPages(){
  global $db, $info;
  if (eregi("^/map.html/$", $info['URL'], $regs)){
    $info['scp'] = 'MenuShowMaps';
  }elseif (eregi("^/([-_A-Za-z0-9]+).html/$", $info['URL'], $regs)){
    $info['pages']['page_by_number'] = false;
    $info['pages']['id'] = $regs[1];
    $info['scp'] = 'PagesOne';
  }elseif (eregi("^/pages/([0-9]+).html/$", $info['URL'], $regs)){
    $info['pages']['page_by_number'] = true;
    $info['pages']['id'] = $regs[1];
    $info['scp'] = 'PagesOne';
  }
  return !empty($info['scp']);
}

function PagesOne(){ 
  global $db, $info;
  if ($info['pages']['page_by_number'])
    $sql = "SELECT pgs_id, pgs_caption, pgs_text FROM "._DB_PGS." WHERE pgs_id='".(int)$info['pages']['id']."' AND pgs_showing='1';";
  else
    $sql = "SELECT pgs_id, pgs_caption, pgs_text FROM "._DB_PGS." WHERE pgs_url='".dab_db($info['pages']['id'])."' AND pgs_showing='1';";
  $res = $db->query($sql);
  if ($row = $db->next_row($res)):
    $info['caption'] = $row['pgs_caption'];
    if ($row['pgs_text'] == '') $row['pgs_text'] = '&nbsp;';
    $info['caption_postfix'] = AdminPagesShowAdminPanel($row['pgs_id'], 1, '&nbsp;');
    echo $row['pgs_text'];
  else:
    scp404();
  endif;
}[/color]

--------------------------------------------------------

далее переменная вставляется в HTML код
<?=$info['scp'](); ?>

Автор: Kallikanzarid 10.9.2011, 14:02
Ура, не один я трахаюсь с a1cms! smile Никто не знает, где определена функция dab_db или хотя бы что она делает?

Автор: Absinthe 10.9.2011, 15:30
Kallikanzarid,  зажми CTRL и щелкни на имени функции - делов то. Или IDE не используешь?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)