Example #1
0
 public function detectLang()
 {
     $lng = !empty($_GET[LANG_VAR]) ? $_GET[LANG_VAR] : (!empty($_POST[LANG_VAR]) ? $_POST[LANG_VAR] : false);
     if ($lng) {
         //инициировали смену языка
         func::setCOOKIE(LANG_VAR, $lng);
     } else {
         $lng = isset($_COOKIE[LANG_VAR]) ? $_COOKIE[LANG_VAR] : false;
     }
     if (!$lng) {
         $lng = $this->defaultLanguage;
         func::setCOOKIE(LANG_VAR, $lng);
     }
     $this->currentLanguage = $lng;
     $this->detected = true;
     return $lng;
 }
Example #2
0
 function fav()
 {
     $fav = $this->getFavorites();
     if (bff::$isAjax) {
         $aResponse = array();
         $nUserID = $this->security->getUserID();
         switch (func::GET('act')) {
             case 'fav':
                 $nItemID = $this->input->id('id', 'p');
                 if (!$nItemID || !$nUserID) {
                     $this->errors->set(Errors::IMPOSSIBLE);
                     break;
                 }
                 $exists = $this->db->one_data('SELECT item_id FROM ' . TABLE_BBS_ITEMS_FAV . ' WHERE item_id = ' . $nItemID . ' AND user_id = ' . $nUserID);
                 if (!empty($exists)) {
                     $this->db->execute('DELETE FROM ' . TABLE_BBS_ITEMS_FAV . ' WHERE item_id = ' . $nItemID . ' AND user_id = ' . $nUserID);
                     $aResponse['added'] = false;
                 } else {
                     $this->db->execute('INSERT INTO ' . TABLE_BBS_ITEMS_FAV . ' (item_id, user_id) 
                         VALUES(' . $nItemID . ',' . $nUserID . ')');
                     $aResponse['added'] = true;
                 }
                 break;
             case 'email_bulk':
                 if (!$nUserID) {
                     $this->errors->set(Errors::IMPOSSIBLE);
                     break;
                 }
                 $aData = $this->input->postm(array('items' => TYPE_ARRAY_UINT));
                 if (empty($aData['items'])) {
                     $this->errors->set('Необходимо отметить объявления в списке');
                     break;
                 }
                 $aData['items'] = $this->db->select('SELECT
                       I.id, I.status, I.publicated,
                       I.cat1_id,   CAT1.title as cat1_title,
                       I.cat2_id,   CAT2.title as cat2_title,
                       I.cat_id,    C.regions as cat_regions, C.prices as cat_prices, C.prices_sett as cat_prices_sett,
                       I.cat_type,  CT.title as cat_type_title,
                       I.cat_subtype,  CST.title as cat_subtype_title,
                       I.imgfav, I.imgcnt, I.price, I.descr, I.descr_regions, I.price, I.price_torg, I.price_bart,
                       I.contacts_name, I.contacts_email, I.contacts_phone, I.contacts_skype, I.contacts_site
                   FROM ' . TABLE_BBS_ITEMS . ' I
                     LEFT JOIN ' . TABLE_BBS_CATEGORIES . ' CAT2 ON I.cat2_id = CAT2.id
                     LEFT JOIN ' . TABLE_BBS_CATEGORIES_TYPES . ' CT ON I.cat_type = CT.id
                     LEFT JOIN ' . TABLE_BBS_CATEGORIES_SUBTYPES . ' CST ON I.cat_subtype = CST.id
                     LEFT JOIN ' . TABLE_USERS . ' U ON I.user_id = U.user_id,
                     ' . TABLE_BBS_CATEGORIES . ' CAT1,
                     ' . TABLE_BBS_CATEGORIES . ' C
                   WHERE ' . $this->db->prepareIN('I.id', $aData['items']) . '
                     AND CAT1.id = I.cat1_id
                     AND C.id = I.cat_id
                     AND (I.user_id = 0 OR U.blocked!=1)
                   ORDER BY I.publicated ASC');
                 if (!empty($aData['items'])) {
                     $res = bff::sendMail($this->security->getUserEmail(), BFF_EMAIL_FROM_NAME, $this->tplFetchPHP($aData, 'items.list.fav2email.php'));
                     //$this->errors->set( ($res ? Errors::SUCCESS : Errors::IMPOSSIBLE) );
                 }
                 break;
             case 'unfav_bulk':
                 $aItemsID = $this->input->post('items', TYPE_ARRAY_UINT);
                 $nResultTotal = 0;
                 if (empty($aItemsID)) {
                     $this->errors->set(Errors::IMPOSSIBLE);
                     break;
                 }
                 if ($fav['total'] == 0) {
                     $this->errors->set(Errors::IMPOSSIBLE);
                     break;
                 }
                 if ($nUserID) {
                     $res = $this->db->execute('DELETE FROM ' . TABLE_BBS_ITEMS_FAV . ' WHERE user_id = ' . $nUserID . ' AND ' . $this->db->prepareIN('item_id', $aItemsID));
                     $nResultTotal = $fav['total'] - intval($res);
                 } else {
                     $aRemoveID = array_intersect($fav['id'], $aItemsID);
                     $aResultID = array_diff($fav['id'], $aRemoveID);
                     func::setCOOKIE(BFF_COOKIE_PREFIX . 'bbs_fav', !empty($aResultID) ? join(',', $aResultID) : '', BBS_FAV_COOKIE_EXPIRE, '/', '.' . SITEHOST);
                     $nResultTotal = !empty($aResultID) ? sizeof($aResultID) : 0;
                 }
                 $aResponse['total'] = $nResultTotal;
                 break;
             default:
                 $this->errors->set(Errors::IMPOSSIBLE);
         }
         $aResponse['res'] = $this->errors->no();
         $this->ajaxResponse($aResponse);
     }
     $aData = array('items' => array());
     if ($fav['total'] > 0) {
         $sqlItemsIN = $this->db->prepareIN('I.id', $fav['id']);
         $aData['items'] = $this->db->select('SELECT
               I.id, I.status, I.svc,
               I.cat1_id,   CAT1.title as cat1_title,
               I.cat2_id,   CAT2.title as cat2_title,
               I.cat_id,    C.regions as cat_regions, C.prices as cat_prices, C.prices_sett as cat_prices_sett,
               I.cat_type,  CT.title as cat_type_title,
               I.cat_subtype,  CST.title as cat_subtype_title,
               I.imgfav, I.imgcnt, I.price, I.descr, I.descr_regions, I.price, I.price_torg, I.price_bart,
               I.views_total, IV.views,
               U.blocked as user_blocked
               FROM ' . TABLE_BBS_ITEMS . ' I
                 LEFT JOIN ' . TABLE_BBS_CATEGORIES . ' CAT2 ON I.cat2_id = CAT2.id
                 LEFT JOIN ' . TABLE_BBS_CATEGORIES_TYPES . ' CT ON I.cat_type = CT.id
                 LEFT JOIN ' . TABLE_BBS_CATEGORIES_SUBTYPES . ' CST ON I.cat_subtype = CST.id
                 LEFT JOIN ' . TABLE_BBS_ITEMS_VIEWS . ' IV ON I.id = IV.item_id AND IV.views_date = ' . $this->db->str2sql(date('Y-m-d')) . '
                 LEFT JOIN ' . TABLE_USERS . ' U ON I.user_id = U.user_id,
                 ' . TABLE_BBS_CATEGORIES . ' CAT1,
                 ' . TABLE_BBS_CATEGORIES . ' C
               WHERE ' . $sqlItemsIN . '
                 AND CAT1.id = I.cat1_id
                 AND C.id = I.cat_id
               ORDER BY I.publicated ASC');
         $aData['cats'] = $this->db->select('SELECT C.id, C.title 
                 FROM ' . TABLE_BBS_ITEMS . ' I, ' . TABLE_BBS_CATEGORIES . ' C
                 WHERE ' . $sqlItemsIN . ' AND I.cat1_id = C.id AND C.numlevel = 1 AND C.enabled = 1
                 GROUP BY C.id');
     }
     config::set('userMenuCurrent', 1);
     return $this->tplFetchPHP($aData, 'items.list.fav.php');
 }
Example #3
0
 function clearRememberMe($cookiePrefix = '')
 {
     func::setCOOKIE($cookiePrefix . 'rmlgn', FALSE, -1);
     func::setCOOKIE($cookiePrefix . 'rmpwd', FALSE, -1);
 }
Example #4
0
 function getFavorites($bResaveFromCookie = false)
 {
     static $cache;
     if (isset($cache)) {
         return $cache;
     }
     $cookieKey = BFF_COOKIE_PREFIX . 'bbs_fav';
     if ($userID = $this->security->getUserID()) {
         $res = $this->db->select_one_column('SELECT item_id FROM ' . TABLE_BBS_ITEMS_FAV . ' WHERE user_id = ' . $userID . ' GROUP BY item_id');
         if (empty($res)) {
             $res = array();
         }
         if ($bResaveFromCookie) {
             $resCookie = func::getCOOKIE($cookieKey);
             if (!empty($resCookie)) {
                 $resCookie = explode(',', $resCookie);
                 if (!empty($resCookie)) {
                     $this->input->clean($resCookie, TYPE_ARRAY_UINT);
                 }
                 if (!empty($resCookie)) {
                     $sqlInsert = array();
                     foreach ($resCookie as $id) {
                         if (!in_array($id, $res)) {
                             $sqlInsert[] = "({$id}, {$userID})";
                             $res[] = $id;
                         }
                     }
                     if (!empty($sqlInsert)) {
                         $this->db->execute('INSERT INTO ' . TABLE_BBS_ITEMS_FAV . ' (item_id, user_id) 
                             VALUES ' . join(',', $sqlInsert));
                     }
                 }
                 func::setCOOKIE($cookieKey, '', BBS_FAV_COOKIE_EXPIRE, '/', '.' . SITEHOST);
             }
         }
     } else {
         $res = func::getCOOKIE($cookieKey);
         if (empty($res)) {
             $res = 0;
         } else {
             $res = explode(',', $res);
             if (empty($res)) {
                 $res = 0;
             } else {
                 $this->input->clean($res, TYPE_ARRAY_UINT);
             }
         }
     }
     $cache = $res = !empty($res) ? array('id' => $res, 'total' => count($res)) : array('id' => array(), 'total' => 0);
     config::set('bbs_favs', $res);
     return $res;
 }
Example #5
0
 function preparePerpage(&$nPerpage, $aValues = array(5, 10, 15), $sParamName = 'perpage', $nExpireDays = 7)
 {
     $nPerpage = $this->input->getpost($sParamName, TYPE_UINT);
     $sCookieKey = BFF_COOKIE_PREFIX . $this->module_name . '_' . $sParamName;
     $nCurCookie = func::getCOOKIE($sCookieKey, 0);
     $this->input->clean($nCurCookie, TYPE_UINT);
     if (!$nPerpage) {
         $nPerpage = $nCurCookie;
         if (!in_array($nPerpage, $aValues)) {
             $nPerpage = current($aValues);
         }
     } else {
         if (!in_array($nPerpage, $aValues)) {
             $nPerpage = current($aValues);
         }
         if ($nCurCookie != $nPerpage) {
             func::setCOOKIE($sCookieKey, $nPerpage, isset($nExpireDays) ? $nExpireDays : 7);
         }
         //default: one week
     }
     array_walk($aValues, create_function('&$item,$key,$cur', '$item = "<option value=\\"$item\\" ".($item==$cur?"selected=\\"selected\\"":"").">$item</option>";'), $nPerpage);
     return join($aValues);
 }