[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Прокомментируйте php скрипт
volnet35
Пытаюсь изучить php.
Если не лень, прокомментируйте, пожалуйста, данный код. Т.к. разбирать код программиста сложнее, чем начинающего smile.gif
Что за что отвечает, примерно знаю, но принцип работы скрипта (что почему и как) не могу понять, т.к. знанийпрактики мало.
Да и вообще, предлагаю создать раздел по разбору работы разных CMS... создание комментариев к коду. Подобного я еще нигде не встречал, но за то, везде имеется на это спрос... мне кажется, для развития форума тема актуальна (посещаемость выростет... знал бы php, обязательно бы сделал такой форум smile.gif ).
PHP
<?php
/* ==================================================== ##
##             COPYRIGHTS © DANNEO PHP TEAM             ##
## ==================================================== ##
## PRODUCT : CMS(CONTENT MANAGEMENT SYSTEM)             ##
## LICENSE : GNU 2(General Public License v.2)          ##
## TECHNOLOGIES : PHP & MySQL                           ##
## WWW : www.reklama-region.com | www.reklama-region.com                ##
## E-MAIL : help@reklama-region.com                             ##
## ==================================================== */
if(!defined("DNREAD")) exit();
/* ==================================================== ##
## GLOBAL TODO                                          ##
## ==================================================== */
global $db,$basepref,$setting,$lang,$usermain,$tm,$api,
       
$siteglobal,$to,$p,$id,$ye,$mo,$da,$cpu;
/* ==================================================== ##
## WORKMOD                                              ##
## ==================================================== */
define('WORKMOD',basename(dirname(__FILE__)));
/* ==================================================== ##
## LEGAL TODO                                           ##
## ==================================================== */
$legaltodo = array('index','cat','art','dat','image','media');
/* ==================================================== ##
## IF EMPTY OR UNLEGAL                                  ##
## ==================================================== */
$to = (isset($to) && in_array($api->sitedn($to),$legaltodo)) ? $api->sitedn($to) : 'index';
/* ==================================================== ##
## INDEX LEGALTODO                                      ##
## ==================================================== */
if($to=='index'){
include(
"temp/head.php");
# Текущая страница
$p preparse($p,THIS_INT);
$p = (!isset($p) || $p<=1) ? $p;
$sf $setting['npagcol']*($p-1);
# Выводим заголовок
$tm->parseprint(array('title'=>'<a href="index.php?dn='.WORKMOD.'">'.$siteglobal['modname'].'</a>'),$tm->manuale['sitetitle']);
// SEARCH
if($setting['nsearch']=='yes'){
$searchcontainer $tm->create('mod/'.WORKMOD.'/form.search');
$tm->parseprint(array('search_input_word'=>$lang['search_input_word'],
                      
'search'=>$lang['search']),$searchcontainer);
}
# SQL
$inq $db->query("SELECT newsid,catid,public,cpu,title,textshort,image_thumb,image_align,image_alt,comments
                   FROM "
.$basepref."_news WHERE act='yes' AND (stpublic=0 OR stpublic<'".NEWTIME."')
                   AND (unpublic=0 OR unpublic>'"
.NEWTIME."') ORDER BY public DESC LIMIT $sf,$setting[npagcol]");
# > 0
if($db->numrows($inq)>0){
// CATING
$catarray = array();
$catinq $db->query("SELECT catid,catcpu,catname,icon FROM ".$basepref."_news_cat",1);
while(
$catin $db->fetchrow($catinq)){
$catarray[$catin['catid']]['catname'] = $catin['catname'];
$catarray[$catin['catid']]['catcpu'] = $catin['catcpu'];
$catarray[$catin['catid']]['icon'] = $catin['icon'];
}
// CATING
# Создаём элементы дизайна
$newscontainer $tm->create('mod/'.WORKMOD.'/'.WORKMOD.'.standart');
# Листинг страниц
$pages pages("news WHERE act='yes' AND (stpublic=0 OR stpublic<'".NEWTIME."') AND (unpublic=0 OR unpublic>'".NEWTIME."')",'newsid','index',WORKMOD.'&to=index',$setting['npagcol'],$p);
# Вывод страниц / Верх
$tm->parseprint(array('text'=>$lang['pages'],'pages'=>$pages),$tm->manuale['pagesout']);

$tm->width=intval(100/$setting['nindcol']);
$tm->tableprint(array(1,2,3));
$nt 0;
$clang = ($setting['ncomact']=="yes") ? $lang['comment_total'] : '';
# Вывод новостей
while($news $db->fetchrow($inq)){

$news['image_alt'] = ($news['image_alt']) ? $api->siteuni($news['image_alt']) : "";
$icon = (!empty($catarray[$news['catid']]['icon'])) ? "<img src=\"".$catarray[$news['catid']]['icon']."\" border=\"0\" align=\"middle\"> " "";
$catcpu = ($siteglobal['seourl']==&& !empty($catarray[$news['catid']]['catcpu'])) ? "&amp;cpu=".$catarray[$news['catid']]['catcpu'] : "";
$cat = (isset($catarray[$news['catid']]['catname'])) ? "<a class=\"cat\" href=\"index.php?dn=".WORKMOD."&amp;to=cat&id=".$news['catid']."".$catcpu."\">".$catarray[$news['catid']]['catname']."</a>" "";
$image = ($news['image_thumb']) ? "<div class=\"thumb\" style=\"margin:5px; float:".$news['image_align'].";\"><img src=\"".$news['image_thumb']."\" border=\"0\" alt=\"".$news['image_alt']."\"></div>" "";
$cpu = ($siteglobal['seourl']==&& $news['cpu']) ? "&amp;cpu=".$news['cpu'] : "";
$link "<a href=\"index.php?dn=".WORKMOD."&amp;to=art&amp;id=".$news['newsid']."".$cpu."\">".$lang['home_last_news_read']."</a>";
$title "<a href=\"index.php?dn=".WORKMOD."&amp;to=art&amp;id=".$news['newsid']."".$cpu."\">".$api->siteuni($news['title'])."</a>";

$count = ($setting['ncomact']=="yes") ? $news['comments'] : '';

$tm->parseprint(array('icon'=>$icon,
                      
'cat'=>$cat,
                      
'title'=>$title,
                      
'time'=>$api->sitetime($news['public'],0),
                      
'text'=>$api->siteuni($news['textshort']),
                      
'image'=>$image,
                      
'link'=>$link,
                      
'comment'=>$clang,
                      
'count'=>$count
                      
),$newscontainer);

$nt++;
if(
$nt $setting['nindcol']){ $tm->tableprint(array(4,3)); }
if(
$nt == $setting['nindcol']){ $nt=0$tm->tableprint(array(4,5,2,3)); }
# Вывод новостей
}
$tm->tableprint(array(4,5,6));
# Вывод страниц / Низ
$tm->parseprint(array('text'=>$lang['pages'],'pages'=>$pages),$tm->manuale['pagesout']);
}
# > 0
include("temp/foot.php");
}
/* ==================================================== ##
## IMG LEGALTODO                                        ##
## ==================================================== */
if($to=='image'){
# ID новости
$id preparse($id,THIS_INT);
$valid $db->query("SELECT news.*,cats.* FROM ".$basepref."_news AS news LEFT JOIN ".$basepref."_news_cat
                     AS cats ON (news.catid=cats.catid) WHERE (news.newsid='$id') AND (news.stpublic=0 OR news.stpublic<'"
.NEWTIME."')
                     AND (news.unpublic=0 OR news.unpublic>'"
.NEWTIME."')");
# Valid
if($db->numrows($valid)==0){
$siteglobal['title'] = $lang['noexit_page_title'];
include(
"temp/head.php");
$tm->noexistprint();
include(
"temp/foot.php");
}
# Valid
# Item
$item $db->fetchrow($valid);
# Item
# ACCESS
if($item['access']=="user" && preparse($usermain['logged'],THIS_INT)==&& preparse($usermain['userid'],THIS_INT)==|| $item['acc']=="user" && preparse($usermain['logged'],THIS_INT)==&& preparse($usermain['userid'],THIS_INT)==0){
$siteglobal['title'] = $lang['ou_title'];
include(
"temp/head.php");
$tm->noaccessprint();
include(
"temp/foot.php");
}
# ACCESS
$alt $api->siteuni($item['image_alt']);
$imgtitle $api->siteuni(preparse($item['title'],THIS_TRIM));
# CREATE KEYWORDS & DESCRIPT
$siteglobal['title'] = $imgtitle;
$siteglobal['keywords'] = ($imgtitle) ?  $api->seokeywords($imgtitle.' '.$alt,5,35) : '';
$img = ($item['image']) ? "<img src=\"".$item['image']."\" border=\"0\" alt=\"".$alt."\">" '';
$img = (empty($img) && $item['image_thumb']) ? "<img src=\"".$item['image_thumb']."\" border=\"0\" alt=\"".$alt."\">" $img;
# header
include("temp/head.simple.php");
# CREATE
$newsimage $tm->create('mod/'.WORKMOD.'/'.WORKMOD.'.image');
# IMG
$tm->parseprint(array('title'=>$imgtitle,'alt'=>$alt,'img'=>$img),$newsimage);
include(
"temp/foot.simple.php");
}
/* ==================================================== ##
## MEDIA LEGALTODO                                      ##
## ==================================================== */
if($to=='media'){
$p preparse($p,THIS_INT);
$p = (!isset($p) || $p<=1) ? $p;
$sf 1*($p-1);
$list preparse($list,THIS_INT);

$valid $db->query("SELECT media.*,list.* FROM ".$basepref."_media AS media LEFT JOIN ".$basepref."_media_list
                     AS list ON (media.listid=list.listid) WHERE list.listid='$list' ORDER BY media.posit ASC
                     LIMIT $sf,1"
);
# Valid
if($db->numrows($valid)==0){
$siteglobal['title'] = $lang['noexit_page_title'];
include(
"temp/head.php");
$tm->noexistprint();
include(
"temp/foot.php");
}
# Valid
# Item
$item $db->fetchrow($valid);
$count $db->fetchrow($db->query("SELECT COUNT(mediaid) AS total FROM ".$basepref."_media WHERE listid='$list'"));
# Item
# ACCESS
if($item['access']=="user" && preparse($usermain['logged'],THIS_INT)==&& preparse($usermain['userid'],THIS_INT)==0){
$siteglobal['title'] = $lang['ou_title'];
include(
"temp/head.php");
$tm->noaccessprint();
include(
"temp/foot.php");
}
# ACCESS
$alt $api->siteuni($item['image_alt']);
$imgtitle $api->siteuni(preparse($item['mediatitle'],THIS_TRIM));
$listtitle $api->siteuni(preparse($item['listname'],THIS_TRIM));
$imgtext $api->siteuni(preparse($item['mediatext'],THIS_TRIM));
# SITEGLOBAL
$siteglobal['title'] = $imgtitle;
$siteglobal['descript'] = (preparse($imgtext,THIS_EMPTY)==0) ? $imgtext "";
$siteglobal['keywords'] = ($imgtitle) ?  $api->seokeywords($imgtitle.' '.$imgtext,5,35) : '';
$img = ($item['image']) ? "<img src=\"".$item['image']."\" border=\"0\" alt=\"".$alt."\">" '';
$img = (empty($img) && $item['image_thumb']) ? "<img src=\"".$item['image_thumb']."\" border=\"0\" alt=\"".$alt."\">" $img;
# header
include("temp/head.simple.php");
# CREATE
$newsimage $tm->create('mod/'.WORKMOD.'/'.WORKMOD.'.media');
# VIEW
$nums 3;
$view ""$goback ""$next "";
if(
$count['total'] > 1){
if(
$p==1){ $swf 0; } else { $swf = ($p > ($count['total'] - $nums)) ? $nums-$p-1; }
$itmedia $db->query("SELECT mediaid,mediatitle,mediatext,image,image_thumb,image_alt,posit FROM ".$basepref."_media
                       WHERE listid='"
.$list."' ORDER BY posit ASC LIMIT $swf,$nums");
# Вывод изображений
if($p 1){
$goback $p-1;
$link = ($setting['rewrite']=="yes") ? WORKMOD."/media-$list-$goback.html" "index.php?dn=".WORKMOD."&to=media&list=$list&p=$goback";
$goback "<a class=\"pages\" href=\"".$link."\">« ".$lang['all_goback']."</a>";
}
if(
$p $count['total']){
$next $p+1;
$link = ($setting['rewrite']=="yes") ? WORKMOD."/media-$list-$next.html" "index.php?dn=".WORKMOD."&to=media&list=$list&p=$next";
$next "<a class=\"pages\" href=\"".$link."\">".$lang['all_forward']." »</a>";
}
while(
$imgmedia=$db->fetchrow($itmedia)){
if(
$imgmedia['image_thumb']){
if(
$item['mediaid']==$imgmedia['mediaid']){
$view.= "<span class=\"mediain\"><img class=\"mediait\" src=\"".$imgmedia['image_thumb']."\" border=\"0\" alt=\"".$imgmedia['image_alt']."\"></span>";
} else {
$view.= "<span class=\"mediain\"><img class=\"mediaod\" src=\"".$imgmedia['image_thumb']."\" border=\"0\" alt=\"".$imgmedia['image_alt']."\"></span>";
}

}
}
# Вывод изображений
}
# VIEW
# IMG
$tm->parseprint(array('listtitle'=>$listtitle,
                      
'title'=>$imgtitle,
                      
'text'=>$imgtext,
                      
'count'=>$p.' / '.$count['total'],
                      
'goback'=>$goback,
                      
'view'=>$view,
                      
'next'=>$next,
                      
'alt'=>$alt,
                      
'img'=>$img),$newsimage);
include(
"temp/foot.simple.php");
}




Спустя 1 час, 2 минуты, 25 секунд (3.01.2009 - 21:00) HardWoman написал(а):
Очень интересная мысль, тоже об этом думала - написание коментария к кодам готовых cms, но для таких целей нужен отдельный сервис. В рамках форума это сделать нереально. Для этого нужно разрабатывать целую структуру, и как мне видиться, достаточно сложную.


Спустя 1 час, 37 минут, 58 секунд (3.01.2009 - 22:38) volnet35 написал(а):
ну для результата всегда нужно трудится smile.gif

Спустя 1 час, 9 минут, 53 секунды (3.01.2009 - 23:48) sergeiss написал(а):
Моё сугубо личное мнение: разбор готовых скриптов такого объема - изврат полный! smile.gif
Если автор вопроса хочет изучать ПХП, то есть более "классический" путь.
Сначала покупается в магазине или скачивается с интернета книга по ПХП. Затем человек пишет что-то (несложное). Но реальное. Пусть даже и не нужное никому. Только для тренировки автору темы.
Затем, когда появляются КОНКРЕТНЫЕ вопросы, человек идет сюда и задает их. Показывает свой код (несколько строк, а не сотни!!!). Просит помочь.
Также, читает то, что спрашивают другие люди и что им отвечают.

И в итоге у него уже не будет желания разбирать такие длинные скрипты.

Хотя я и не отрицаю, что может набраться некоторое количество любителей это делать.

Спустя 12 часов, 45 минут, 1 секунда (4.01.2009 - 12:33) volnet35 написал(а):
Цитата (sergeiss @ 3.01.2009 - 23:48)
И в итоге у него уже не будет желания разбирать такие длинные скрипты.


Согласен. Много читал, делал простой блог и сайт. Не помогает. Я хочу сделать модуль для CMS, и этот код от туда. Он переодически повторяется.
Вот например:
PHP
// CATING
# Создаём элементы дизайна
$newscontainer $tm->create('mod/'.WORKMOD.'/'.WORKMOD.'.standart');
# Листинг страниц
$pages pages("news WHERE act='yes' AND (stpublic=0 OR stpublic<'".NEWTIME."') AND (unpublic=0 OR unpublic>'".NEWTIME."')",'newsid','index',WORKMOD.'&to=index',$setting['npagcol'],$p);
# Вывод страниц / Верх
$tm->parseprint(array('text'=>$lang['pages'],'pages'=>$pages),$tm->manuale['pagesout']);

$tm->width=intval(100/$setting['nindcol']);
$tm->tableprint(array(1,2,3));
$nt 0;
$clang = ($setting['ncomact']=="yes") ? $lang['comment_total'] : '';


, нигде не нашел, что такое:
PHP
$tm->parseprint(array('text'=>$lang['pages'],'pages'=>$pages),$tm->manuale['pagesout']);

Особенно не понятно это:
PHP
->

Спустя 23 минуты, 26 секунд (4.01.2009 - 12:57) Сёма написал(а):
По поводу ресурса, для комментирования кода. Я тоже считаю что это не нужно никому.

А вот для этого и нужно прочитать пару книг по php. Что бы понимать что откуда может взяться. Код в первом посте прокоментирован дальше некуда.

Если бы вы почитали про классы - то вы бы поняли что значит знак ->
- вот этим и займитесь. И таких вопросов у вас не будет.

Ну а как поступить дальше это уже конечно ваше дело.


Спустя 14 минут, 39 секунд (4.01.2009 - 13:11) sergeiss написал(а):
volnet35 - вот это более конкретный вопрос, на который можно дать конкретный и короткий ответ smile.gif

Знак, состоящий из дефиса и символа "больше" (->) обозначает доступ к элементу класса. То есть к переменной или к функции класса.
По приведенному тобой примеру можно уверенно сказать, что есть переменная $tm, являющаяся экземпляром какого-то класса. В твоем примере определения этого класса нету. Оно должно быть где-то в файлах, подключаемых через include в начале скрипта.

$tm->parseprint(...) - это функция, определенная внутри класса.
$tm->manuale, $tm->width - переменные класса.

Чтобы это понять, читай описание (в мануалах) про классы: как их определить, как использовать.

Спустя 1 день, 56 минут, 14 секунд (5.01.2009 - 14:08) volnet35 написал(а):
Цитата (sergeiss @ 4.01.2009 - 13:11)
Оно должно быть где-то в файлах, подключаемых через include в начале скрипта.

$tm->parseprint(...) - это функция, определенная внутри класса.
$tm->manuale, $tm->width - переменные класса.

Чтобы это понять, читай описание (в мануалах) про классы: как их определить, как использовать.

подключение только через
PHP
global $db,$basepref,$setting,$lang,$usermain,$tm,$api,
       
$siteglobal,$to,$p,$id,$ye,$mo,$da,$cpu;

Книжек много уже читал, но что за классы имели в виду, так и не понял?

Спустя 12 минут, 7 секунд (5.01.2009 - 14:20) sergeiss написал(а):
Объясняю, что такое классы (точнее, даю алгоритм поиска информации).
1. Заходишь на сайт http://yandex.ru
2. В строке поиска вводишь "классы в php".
3. Смотришь найденные ссылки: первую, вторую, третью, четвертую, пятую... И так далее, пока не станет понятно.

Как вариант, в п.1 можно зайти на сайт http://google.ru, а дальше см. п.2 из алгоритма.

Спустя 2 дня, 2 часа, 7 минут, 30 секунд (7.01.2009 - 16:27) volnet35 написал(а):
smile.gif
Спасибо! ПОнял... примерно... Также заметил, что не во всех книгах об этом написано.
Сейчас пытаюсь сделать переменную {country} в шаблон, но не могу никак сделать... помогите, пожалуйста понять структуру запроса.
Вот работа с моими комментами:
PHP
# SQL
$inqcountry $db->query("SELECT countryid,countryname FROM ".$basepref."_country WHERE act='yes' AND countryid=1  ORDER BY countryname DESC LIMIT 5");
//Запрос на вывод countryid,countryname                   
$country $db->fetchrow($inqcountry);

//Пока в базе есть данные из запроса inq, занести их в переменную $agency в виде масива и выполнять следующее

$cpu = ($siteglobal['seourl']==&& $agency['cpu']) ? "&amp;cpu=".$agency['cpu'] : "";
//Присвоить переменной $cpu следующее значение: если URL = 1 и есть значение cpu в таблице agency, то присвоить переменной $cpu значение cpu из таблицы agency, иначе ничего не присваивать
$title "<a href=\"index.php?dn=".WORKMOD."&amp;to=art&amp;id=".$agency['id']."".$cpu."\">".$api->siteuni($agency['title'])."</a>";
//В переменную $title занести ссылку с текстом из таблицы agency поля title 

$countryname "<a href=\"index.php?dn=".WORKMOD."&amp;to=art&amp;id=".$country['countryid']."".$cpu."\">".$api->siteuni($country['countryname'])."</a>";
//В переменную $country занести ссылку с текстом из таблицы agency поля title 



$tm->parseprint(array('logo'=>$logo,
                      
'city'=>$city,
                      
'countryid'=>$countin['countryid'],                                            
                      
'id'=>$agency['agencyid'],
                      
'countryname'=>$countin['countryname'],                      
                      
'title'=>$title,
                      
'count'=>$count
                      
),$agencycontainer);

Спустя 1 день, 3 часа, 20 минут, 10 секунд (8.01.2009 - 19:47) volnet35 написал(а):
Если кто понимает php, уделите времени немного мне smile.gif
Посидел вечерок, поразбирался... Создал код, но не хочет выводить данные, где-то ошибка, но найти не могу:
PHP
# > 0
if($db->numrows($inq)>0){
//Если запрос получился и в базе есть данные, то выполнять следующее

// CATING
$countryarray = array();
$inqcountry $db->query("SELECT * FROM ".$basepref."_country WHERE countryid=1");
//Запрос на вывод countryid,countryname                   
$resultcountry $db->fetchrow($inqcountry);
while(
$countryin $db->fetchrow($resultcountry)){
$countryarray[$countryin['countryid']]['countryname'] = $countryin['countryname'];


}
// CATING

далее сделал так:
PHP
$country $countryarray[$country['countryid']]['countryname'];
$tm->parseprint(array('logo'=>$logo,
                      
'city'=>$city,
                      
'countryid'=>$countryin['countryid'],                                            
                      
'id'=>$agency['agencyid'],
                      
'country'=>$country,                      
                      
'title'=>$title,
                      
'count'=>$count
                      
),$agencycontainer);
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.