db = &$db; $this->tpl = &$tpl; $this->error = &$error; } function isAdminUser($user = array()){ if((isset($user['login']) && $user['login']==ADMIN_BN_USER) && (isset($user['psw']) && $user['psw']==ADMIN_BN_PSW)){ $_SESSION['user_bn']['login'] = $user['login']; $_SESSION['user_bn']['psw'] = $user['psw']; } if((isset($_SESSION['user_bn']['login']) && $_SESSION['user_bn']['login']==ADMIN_BN_USER) && (isset($_SESSION['user_bn']['psw']) && $_SESSION['user_bn']['psw']==ADMIN_BN_PSW))return true; return false; } function trim(&$data){ foreach($data as $key=>$value){ if(!is_array($data[$key]))$data[$key] = trim($value); } } function valid($data,$upload = null){ if(isset($data['place'])){ if( !preg_match("/^[0-9]+$/",$data['place']) ) $this->error[] = "Îøèáêà ââîäà ïîëÿ Ìåñòî."; } if(isset($data['city_id'])){ if( !preg_match("/^[0-9]+$/",$data['city_id']) ) $this->error[] = "Îøèáêà ââîäà ïîëÿ Ãîðîä."; } if(isset($data['url'])){ if( preg_match("/^(http:\/\/)(.*)?/i",$data['url']) ) $this->error[] = "Îøèáêà ââîäà ïîëÿ URL."; } if(isset($data['type'])){ if( !preg_match("/^(flash|image|code)$/",$data['type']) ) $this->error[] = "Îøèáêà ââîäà ïîëÿ Òèï."; } if(isset($data['type'],$data['code']) && $data['type']=="code"){ if( !preg_match("/.+/is",$data['code']) ) $this->error[] = "Îøèáêà ââîäà ïîëÿ Êîä."; } if(isset($data['type'],$upload['upload']['name']) && $upload['upload']['name']!=null && ($data['type']=="flash" || $data['type']=="image") ){ $type = substr(strrchr($upload['upload']['name'],"."),1); if( !preg_match("/^(jpeg|jpg|gif|png|swf)$/i",$type) ) $this->error[] = "Îøèáêà ââîäà ïîëÿ Ôàéë, òîëüêî jpg,png,gif,swf."; } return ( count($this->error) ) ? true : false; } function SaveBanner($data,$upload = null) { $table_name = "banners"; if ($data['update_id'] > 0) { $DB_AUTOQUERY = DB_AUTOQUERY_UPDATE; $id = $data['update_id']; $where = "id=$id"; } else { $DB_AUTOQUERY = DB_AUTOQUERY_INSERT; $where = null; } if (isset($data['rubrics'])) { $action = '|'.implode("|",$data['rubrics']).'|'; } else { $action = "|begin|"; } $fields_values = array( "place" => $data['place'], "n" => $data['n'], "n_name_ru" => $data['n_name'], "n_name_ukr" => $data['n_name_ukr'], "city_id" => 1, "action" => $action, "type" => $data['type'], "code_ru" => $data['code'], "code_ukr" => $data['code_ukr'], "url_ru" => $data['url'], "url_ukr" => $data['url_ukr'], "width" => $data['width'], "height" => $data['height'], "sort" => $data['sort'] ); if (isset($data['sub_place']) && is_numeric($data['sub_place'])) { $fields_values['sub_place'] = $data['sub_place']; } if ($upload['upload']['tmp_name']) { if ($data['update_id'] > 0) { $this->deleteFile($data['update_id']); } $uploadfile = "./uploaded/pic/banners/"; $type = substr(strrchr($upload['upload']['name'], "."), 1); $uploadname = mktime() . "." . $type; if (!move_uploaded_file($_FILES['upload']['tmp_name'], $uploadfile . $uploadname)) { print"Îøèáêà ïðè çàêà÷êå ôàéëà!"; } $fields_values['file_ru'] = $uploadname; } if ($upload['upload_ukr']['tmp_name']) { if ($data['update_id'] > 0) { $this->deleteFileUkr($data['update_id']); } $uploadfile = "./uploaded/pic/banners/"; $type = substr(strrchr($upload['upload_ukr']['name'], "."), 1); $uploadname = mktime() . "_ukr." . $type; if (!move_uploaded_file($_FILES['upload_ukr']['tmp_name'], $uploadfile . $uploadname)) { print"Îøèáêà ïðè çàêà÷êå ôàéëà!"; } $fields_values['file_ukr'] = $uploadname; } $r = $this->db->autoExecute($table_name, $fields_values, $DB_AUTOQUERY,$where); if (PEAR::isError($r)) die($r->getMessage()); } function deleteFile($banner_id){ $sql = "select file_ru from banners where id=?"; $file = $this->db->getOne($sql,array($banner_id)); @unlink("./uploaded/pic/banners/".$file); } function deleteFileUkr($banner_id){ $sql = "select file_ukr from banners where id=?"; $file = $this->db->getOne($sql,array($banner_id)); @unlink("./uploaded/pic/banners/".$file); } function deleteBanner($id){ $this->deleteFile($id); $this->deleteFileUkr($id); $sql = "delete from banners where id=?"; $this->db->query($sql,array($id)); } function viewBanner($action,$cityID,$place,$n){ $sql = "select *,file_{$this->lang} as file,url_{$this->lang} as url,code_{$this->lang} as code,n_name_{$this->lang} as n_name from banners Where city_id=? and place=? and n=? Limit 1"; $banner = $this->db->getRow($sql,array($cityID,$place,$n),DB_FETCHMODE_ASSOC); $banner['rubrics_checked'] = explode('|',substr($banner['action'],1,-1)); //print_r($banner); $this->tpl->assign('banner',$banner); } function viewBannerList($action,$cityID,$place){ $sql = "select *,file_{$this->lang} as file,url_{$this->lang} as url,code_{$this->lang} as code,n_name_{$this->lang} as n_name from banners Where action like '%|$action|%' and city_id=? and place=? order by sort asc"; $res = $this->db->getAll($sql,array($cityID,$place),DB_FETCHMODE_ASSOC); //print_r($res); $this->tpl->assign('banners_list',$res); } function viewBannerBlock($action,$cityID,$place){ $limit = 1; $count = $this->db->getOne("select count(*) from banners Where action like '%|$action|%' and city_id=? and place=?",array($cityID,$place)); $round = rand(0,($count-$limit)); $sql = "select *,file_{$this->lang} as file,url_{$this->lang} as url,code_{$this->lang} as code,n_name_{$this->lang} as n_name from banners Where action like '%|$action|%' and city_id=? and place=?"; if ($place == 10) { $rubrics = $this->db->getAll($sql,array($cityID,$place),DB_FETCHMODE_ASSOC); } else { $sql .= " Limit $round, $limit "; $rubrics = $this->db->getRow($sql,array($cityID,$place),DB_FETCHMODE_ASSOC); } //print_r($rubrics); $this->tpl->assign('banner_'.$place,$rubrics); } function viewBannerN($action,$cityID,$place){ $sql = "select * from banners where city_id=? and place=? order by n"; $row = $this->db->getAll($sql,array($cityID,$place),DB_FETCHMODE_ASSOC); $this->tpl->assign('ns',$row); } function addBannerN($action,$cityID,$place){ $max_n = $this->db->getOne("select n from banners where city_id=? and place=? order by n desc",array($cityID,$place),DB_FETCHMODE_ASSOC); $fields_values = array("place"=>$place,"city_id"=>$cityID,"n"=>($max_n+1)); $this->db->autoExecute("banners", $fields_values, DB_AUTOQUERY_INSERT); return $fields_values["n"]; } function error(){ $this->tpl->assign('error',$this->error); } function displayAdmin(){ $this->tpl->display("banners_admin.tpl"); } function displayBanners(){ $this->tpl->assign('tpl',"banners.tpl"); } } ?>