ребята нужна по мощь ваша вот что выдаёт за ошибку
вот сам этот ImagesAdmin, чё делать по могите пожалуйста
ребят помагите я вас очень прошу
Код:
Notice: Undefined index: perpage in /home/vano/public_html/new/admin/classes/ImagesAdmin.php on line 154
Notice: Undefined index: geosize in /home/vano/public_html/new/admin/classes/ImagesAdmin.php on line 159
Notice: Undefined index: filesize in /home/vano/public_html/new/admin/classes/ImagesAdmin.php on line 160
Notice: Undefined index: type in /home/vano/public_html/new/admin/classes/ImagesAdmin.php on line 161
Код:
<?php
require_once('path_utils.php');
require_once('utils.php');
class ImagesAdmin extends WorkFlow {
protected $urlDir = '';
protected $dblink = null;
protected function init() {
//setlocale(LC_ALL, 'ru_RU.UTF8');
$settings_dir = "../settings";
include "$settings_dir/conf.php";
header("Content-type: text/html; charset={$this->charset}");
$this->DEBUG = 1;
$this->setConfig('imgcfg.php');
$this->urlDir = dirname($_SERVER['SCRIPT_NAME']);
$this->tplDir = '../templates/'.$template.'';
}
protected function main() {
if (isset($this->get['list'])) {
$this->tplName = 'site_list.tpl';
} elseif (isset($this->get['search'])) {
$this->tplName = 'search_result.tpl';
$this->dblink = $this->dbconnect();
// определяем начало выборки строк из базы(LIMIT)
$this->get['start'] = is_numeric(@$this->get['start']) && @$this->get['start'] >= 0 ? $this->get['start'] : 0;
$rowStart = mysql_real_escape_string($this->get['start']);
ini_set("display_errors",0);
$searchPhrase = $_GET['phrase'];// = iconv('cp1251', 'utf-8', $_GET['phrase']);
$searchPhrase = mysql_real_escape_string(urldecode($_GET['phrase']));
$searchPhrase = preg_replace("/\s{2,}/i", '', trim($searchPhrase));
ini_set("display_errors",0);
# start for language
$settings_dir = "../settings";
include "$settings_dir/conf.php";
include "../languages/$language-language.php";
//проверяем язык в куках
$domain= $site;
$lang=$_GET['lang'];
if (!$lang) {$HTTP_GET_VARS['lang'];}
if ($lang){
setcookie("langu", $lang, time() + 3600*24*30);
header("location:$domain");
}
if ($_COOKIE['langu']) {
include_once("../languages/".$_COOKIE['langu']."-language.php");
}
# end for language
//Опрееляем язык как файл для шаблонизатора
foreach ($sph_messages as $key => $value)
{
$this->tplvars[$key] = $value;
}
if (empty($searchPhrase)) {
// если фраза для поиска пустая то выходим в основной main
$this->tplvars['searchres'] = $sph_messages['text_img_nokeywords'];
$this->tplvars['pages'] = '';
$this->tplvars['searchphrase'] = '';
parent::main();
return false;
}
// Считаем общее кол-во найденных строк. Этот параметр лучше кэшировать
$sqlTotalRows = "SELECT count(*) AS imgcnt FROM `images_indexed`
WHERE (LOWER(`title`) LIKE LOWER('%$searchPhrase%')) OR (LOWER(`url`) LIKE LOWER('%$searchPhrase%'));";
$res = mysql_query($sqlTotalRows);
$row = mysql_fetch_assoc($res);
if ($row['imgcnt'] <= 0) { // если найдено 0 результатов то выходим в основной main
$this->tplvars['searchres'] = $sph_messages['text_img_noresult'];
$this->tplvars['pages'] = '';
$this->tplvars['searchphrase'] = $_GET['phrase'];
parent::main();
return false;
}
$totalPages = ceil($row['imgcnt'] / $this->config['search']['rows']);
$pagesHtml = $this->makePageList($rowStart, $row['imgcnt'], $this->config['search']['rows'], "?ajaxsearch&phrase=".urlencode(iconv('utf-8', 'cp1251', $_GET['phrase']))."&start=");
$sqlQuery = "SELECT * FROM `images_indexed`
WHERE (LOWER(`title`) LIKE LOWER('%$searchPhrase%')) OR (LOWER(`url`) LIKE LOWER('%$searchPhrase%'))
LIMIT $rowStart, {$this->config['search']['rows']};";
$res = mysql_query($sqlQuery);
//echo $searchPhrase."<br/>";
$html = '';
while ($row = mysql_fetch_assoc($res)) {
$row['stitle'] = mb_substr($row['title'], 0, 20, 'utf-8');
$row['size'] = intval($row['size'] / 1024);
$imgHost = extractHost($row['url']);
$html .= "<li>
<a href=\"/preview?url={$row['url']}\" ><img src=\"{$row['local_path']}\" alt=\"{$row['title']}\" title=\"{$row['title']}\"></a><br/>
{$row['stitle']}<br/>
{$row['width']} x {$row['height']} - {$row['size']}k - {$row['type']}<br/>
<a href=\"{$row['page']}\" target=\"_blank\">$imgHost</a>
</li>\n";
}
$this->tplvars['searchres'] = $html;
$this->tplvars['pages'] = $pagesHtml;
$this->tplvars['searchphrase'] = $_GET['phrase'];
} elseif (isset($this->get['ajaxsearch'])) {
//$this->tplName = 'search_result.tpl';
$this->dblink = $this->dbconnect();
$searchPhrase = $_GET['phrase'];// = iconv('cp1251', 'utf-8', $_GET['phrase']);
$searchPhrase = mysql_real_escape_string(urldecode($_GET['phrase']));
$searchPhrase = preg_replace("/\s{2,}/i", '', trim($searchPhrase));
if (empty($searchPhrase)) {
// если фраза для поиска пустая то выходим в основной main
$this->tplvars['searchres'] = 'Не задана фраза для поиска';
$this->tplvars['pages'] = '';
$this->tplvars['searchphrase'] = '';
parent::main();
return false;
}
$formSqlParams = array(
'page' => array(16 => 16, 20 => 20),
'geosize' => array('all' => '', 'large' => 'AND `width`>=1200',
'medium' => 'AND (`width`<1200 AND `width`>300)',
'small' => 'AND `width`<=300' ),
'filesize' => array(
'all' => '',
20 => 'AND `size`<20480',
50 => 'AND `size`<51200',
100 => 'AND `size`<102400',
200 => 'AND `size`<204800'
),
'type' => array(
'all' => '',
'jpg' => "AND ( LOWER(`type`)='jpg' OR LOWER(`type`)='jpeg' )",
'gif' => "AND LOWER(`type`)='gif'",
'png' => "AND LOWER(`type`)='png'"
)
);
// Устанавливаем sql параметры выборки из базы заданные в форме фильтрации
$sqlLimit = isset($formSqlParams['page'][$this->get['perpage']]) ? $formSqlParams['page'][$this->get['perpage']] : $this->config['search']['rows'];
$this->get['start'] = is_numeric(@$this->get['start']) && @$this->get['start'] >= 0 ? $this->get['start'] : 0;
$rowStart = mysql_real_escape_string($this->get['start']);
$sqlGeosize = isset($formSqlParams['geosize'][$this->get['geosize']]) ? $formSqlParams['geosize'][$this->get['geosize']] : '';
$sqlFilesize = isset($formSqlParams['filesize'][$this->get['filesize']]) ? $formSqlParams['filesize'][$this->get['filesize']] : '';
$sqlType = isset($formSqlParams['type'][$this->get['type']]) ? $formSqlParams['type'][$this->get['type']] : '';
// Считаем общее кол-во найденных строк. Этот параметр лучше кэшировать
$sqlTotalRows = "SELECT count(*) AS imgcnt FROM `images_indexed`
WHERE (LOWER(`title`) LIKE LOWER('%$searchPhrase%') OR LOWER(`url`) LIKE LOWER('%$searchPhrase%'))
$sqlGeosize $sqlFilesize $sqlType;";
$res = mysql_query($sqlTotalRows);
$row = mysql_fetch_assoc($res);
if ($row['imgcnt'] <= 0) { // если найдено 0 результатов то выходим в основной main
$this->tplvars['searchres'] = 'По вашему запросу ничего не найдено';
$this->tplvars['pages'] = '';
$this->tplvars['searchphrase'] = $_GET['phrase'];
parent::main();
return false;
}
$totalPages = ceil($row['imgcnt'] / $sqlLimit);
//$pagesHtml = $this->makePageList($rowStart, $row['imgcnt'], $this->config['search']['rows'], "?ajaxsearch&phrase=".urlencode(iconv('utf-8', 'cp1251', $_GET['phrase']))."&start=", "onclick=\"return false;\"");
$pagesHtml = $this->makePageList($rowStart, $row['imgcnt'], $this->config['search']['rows'], "?ajaxsearch&phrase=".urlencode(iconv('utf-8', 'cp1251', $_GET['phrase']))."&start=");
//$pagesHtml = $this->makePageList($rowStart, $row['imgcnt'], $this->config['search']['rows'], '');
$sqlQuery = "SELECT * FROM `images_indexed`
WHERE (LOWER(`title`) LIKE LOWER('%$searchPhrase%') OR LOWER(`url`) LIKE LOWER('%$searchPhrase%'))
$sqlGeosize $sqlFilesize $sqlType
LIMIT $rowStart, $sqlLimit;";
//echo $sqlQuery;
$res = mysql_query($sqlQuery);
$html = '';
while ($row = mysql_fetch_assoc($res)) {
$row['stitle'] = mb_substr($row['title'], 0, 20, 'utf-8');
$row['size'] = intval($row['size'] / 1024);
$imgHost = extractHost($row['url']);
$html .= "<li>
<a href=\"/preview?url={$row['url']}\" ><img src=\"{$row['local_path']}\" alt=\"{$row['title']}\" title=\"{$row['title']}\"></a><br/>
{$row['stitle']}<br/>
{$row['width']} x {$row['height']} - {$row['size']}k - {$row['type']}<br/>
<a href=\"{$row['url']}\" target=\"_blank\">$imgHost</a>
</li>\n";
}
$this->tplvars['rawdata'] = "<div class='pages'>$pagesHtml</div><br/><br/>$html<br/><div class='pages'>$pagesHtml</div>";
} elseif (isset($this->get['showimages'])) {
$this->tplName = 'site_images.tpl';
$this->dblink = $this->dbconnect();
$sid = mysql_real_escape_string($this->get['site_id']);
// определяем начало выборки строк из базы(LIMIT)
$this->get['start'] = is_numeric(@$this->get['start']) && @$this->get['start'] >= 0 ? $this->get['start'] : 0;
$rowStart = mysql_real_escape_string($this->get['start']);
// Считаем общее кол-во найденных строк. Этот параметр лучше кэшировать
$sqlTotalRows = "SELECT count(*) AS imgcnt FROM `images_indexed` WHERE `site_id` = $sid;";
$res = mysql_query($sqlTotalRows);
$row = mysql_fetch_assoc($res);
$pagesHtml = $this->makePageList($rowStart, $row['imgcnt'], 16, "?showimages&site_id=$sid&start=");
$sqlQuery = "SELECT * FROM `images_indexed`
WHERE `site_id` = $sid ORDER BY `id`
LIMIT $rowStart, {$this->config['search']['rows']};";
$res = mysql_query($sqlQuery);
$html = '';
while ($row = mysql_fetch_assoc($res)) {
if (empty($row['title'])) {
$row['title'] = 'Нет описания';
}
//$row['stitle'] = substr($row['title'], 0, 40); // в utf-8 может отрезать байт от символа.
$row['size'] = intval($row['size'] / 1024);
$imgHost = preg_replace("/^https*\:\/\/([^\/]+?)\/.*/is", "\\1", $row['url']);
$html .= "<li>
<div class=\"imgbox\">
<a href=\"/preview?url={$row['url']}\"><img src=\"{$row['local_path']}\" alt=\"{$row['title']}\" title=\"{$row['title']}\"></a><br/>
<a href=\"{$row['url']}\" target=\"_blank\">$imgHost</a>
</div>
<div class=\"imgtitle\">{$row['title']}</div>
<div class=\"imgaction\" id=\"img_{$row['id']}\"><a href=\"\" onclick=\"delImage({$row['id']}); return false;\">Удалить</a></div>
</li>\n";
}
$this->tplvars['searchres'] = $html;
$this->tplvars['pages'] = $pagesHtml;
} elseif (isset($this->get['ajaxdelimg'])) {
if ( !(is_numeric($this->get['id']) && $this->get['id'] >= 0) ) {
$this->tplvars['rawdata'] = "Неверный ID $this->get['id']";
} else {
$this->dblink = $this->dbconnect();
$id = mysql_real_escape_string($this->get['id']);
$sqlDelQuery = "DELETE FROM `images_indexed` WHERE `id` = $id;";
$res = mysql_query($sqlDelQuery);
if (mysql_affected_rows() > 0 ) {
$this->tplvars['rawdata'] = "Удалена";
} else {
$this->tplvars['rawdata'] = "Ошибка удаления. Возможно id $id не найден в базе";
}
}
} else {
$this->tplName = 'default.tpl';
}
parent::main();
}
protected function dbconnect() {
$this->dblink = mysql_connect($this->config['db']['host'], $this->config['db']['user'], $this->config['db']['passwd']);
if (!$this->dblink) {
die('Ошибка соединения с БД сервером: ' . mysql_error());
}
//mysql_set_charset($this->config['db']['charset']);
//mysql_query("SET NAMES '{$this->config['db']['charset']}';") or die(mysql_error().'. '.__FILE__.' [line:'.__LINE__.']');
mysql_set_charset($this->config['db']['charset']) or die(mysql_error().'. '.__FILE__.' [line:'.__LINE__.']');
if ( !mysql_select_db($this->config['db']['name']) ) die ('Ошибка подключения к БД: ' . mysql_error());
//echo mysql_client_encoding();
return $this->dblink;
}
// Возвращает хтмл-меню паджинатора
protected function makePageList($offset, $total, $limit, $base = '', $js = '') {
$total = $total == 0 ? 1 : $total;
$lastp = ceil($total / $limit);
$thisp = ceil(($offset == 0 ? 1 : ($lastp / ($total / $offset))));
$html = "<script language=\"javascript\">
\$('.pagesls').click( function(){
submit(\$(this).attr('start'));
return false;
});
</script>";
$html .= "<div class=\"paginator\">\n";
if ($thisp==1) $html .= "<SPAN CLASS=\"atstart\"><<</SPAN>\n";
else $html .= "<span class=\"pagesls\" start=\"".(($thisp - 2) * $limit)."\"><a href=\"".$base.(($thisp - 2) * $limit)."\" $js class=\"prev\"><<</a></span> \n";
$page1 = $base . "0";
$page2 = $base . $limit;
if ($thisp <= 5) {
for ($p = 1;$p <= min( ($thisp<=3) ? 5 : $thisp+2,$lastp); $p++) {
if ($p == $thisp) {
$html .= "<span class=\"this-page\">$p</span>\n ";
} else {
$url = $base . (($limit * ($p - 1)));
$html .= "<span class=\"pagesls\" start=\"".($limit * ($p - 1))."\"><a href=\"$url\" $js >$p</a></span>\n";
}
}
if ($lastp > $p) {
$html .= "<span class=\"break\">...</span>\n";
$html .= "<span class=\"pagesls\" start=\"".(($lastp - 2) * $limit)."\"><a href=\"".$base.(($lastp - 2) * $limit)."\" $js >".($lastp-1)."</a></span>\n";
$html .= "<span class=\"pagesls\" start=\"".(($lastp - 1) * $limit)."\"><a href=\"".$base.(($lastp - 1) * $limit)."\" $js >".$lastp."</a></span>\n";
}
} else if ($thisp > 5) {
$html .= "<span class=\"pagesls\" start=\"0\"><a href=\"".$page1."\" $js >1</a></span> <span class=\"pagesls\" start=\"$limit\"><a href=\"".$page2."\" $js>2</a></span>";
if ($thisp != 6) $html .= "<span class=\"break\">...</span>\n ";
for ($p = ($thisp == 6) ? 3 : min($thisp - 2,$lastp-4);$p <= (($lastp-$thisp<=5) ? $lastp:$thisp+2); $p++) {
if ($p == $thisp) {
$html .= "<span class=\"this-page\">$p</span>\n ";
} elseif ($p <=$lastp) {
$url = $base . ($limit * ($p - 1));
$html .= "<span class=\"pagesls\" start=\"".($limit * ($p - 1))."\"><a href=\"$url\" $js >$p</a></span>\n ";
}
}
if ($lastp > $p+1) {
$html .= "<span class=\"break\">...</span>\n";
$html .= "<span class=\"pagesls\" start=\"".(($lastp - 2) * $limit)."\"><a href=\"".$base.(($lastp - 2) * $limit)."\" $js >".($lastp-1)."</a></span>\n";
$html .= "<span class=\"pagesls\" start=\"".(($lastp - 1) * $limit)."\"><a href=\"".$base.(($lastp - 1) * $limit)."\" $js >".$lastp."</a></span>\n";
}
}
if ($thisp == $lastp) $html .= "<SPAN CLASS=\"atend\">>></SPAN>\n";
else $html .= "<span class=\"pagesls\" start=\"".(($thisp) * $limit)."\"><a href=\"".$base.(($thisp) * $limit)."\" $js class=\"next\" >>></a></span>\n";
$html .= "</div>\n";
return $html;
}
}