banners.class.php 8.71 KB
<?php
class Banners{
 var $db = null;
 var $tpl = null;
 var $error = null;
//var $id = false;
 var $lang = 'ru';

 function Banners(&$db,&$tpl,&$error){
  $this->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");
 }
}
?>