Skocz do zawartości

Witamy w Nieoficjalnym polskim support'cie AMX Mod X

Witamy w Nieoficjalnym polskim support'cie AMX Mod X, jak w większości społeczności internetowych musisz się zarejestrować aby móc odpowiadać lub zakładać nowe tematy, ale nie bój się to jest prosty proces w którym wymagamy minimalnych informacji.
  • Rozpoczynaj nowe tematy i odpowiedaj na inne
  • Zapisz się do tematów i for, aby otrzymywać automatyczne uaktualnienia
  • Dodawaj wydarzenia do kalendarza społecznościowego
  • Stwórz swój własny profil i zdobywaj nowych znajomych
  • Zdobywaj nowe doświadczenia

Dołączona grafika Dołączona grafika

Guest Message by DevFuse
 

Zdjęcie
PHP

Sklep by ghost - usuniecie wymaganego wypelnienia amxbansa i serwera

php

  • Nie możesz napisać tematu
  • Zaloguj się, aby dodać odpowiedź
3 odpowiedzi w tym temacie

#1 'eXe'

    Profesjonalista

  • Zbanowany

Reputacja: 9
Nowy

  • Postów:164
  • GG:
  • Imię:PatryQ
  • Lokalizacja:Czeladz
Offline

Napisano 16.02.2014 11:50

Witam,

Potrzebuje osoby która mi przerobi plik sklepu by ghost (raczej nie ma z tym dużo roboty).
Chodzi mi aby podczas dodawania nowej usługi, nie było wymagane wypełnianie amxbansa, serwera. Po prostu żebym mógł dodać nową usługę, bez wypełniania serwera i amxbansa.
Tutaj daje kod odpowiadający za to:

    /**
     * Dodaje nową usułgę...
     *
     * @param array
     *
     * @access static
     * @return array
     */
    static public function add($data)
    {
        if(!Service::allRequired($data))
        {
            return array(0, 'Musisz podać wszystkie pola');
        }
        
        
        $query = Core::db()->prepare('INSERT INTO `services_` VALUES(NULL, ?, ?, ?, ?, ?, ?, ?, ?, ?, 0)');

        $query->execute(array(
            $data['name'],
            $data['desc'],
            $data['flags'],
            (float)$data['cost_per_day'],
            (int)$data['min_day'],
            (int)$data['max_day'],
            $data['amxbans_id'],
            $data['server_id'],
            $data['allowed_group'],
        ));
        
        if($query->rowCount())
        {
            return array(1, 'Usułga została dodana');
        }
        
        return array(0, 'Nie udało się dodać usuługi...');
    }

A tutaj daję pełny kod:

<?php defined('SYSPATH') or die('No direct script access.');

abstract class Service
{    
    /**
     * Zwraca liste usług
     *
     *
     * @access static
     * @return array
     */
    static public function getAll()
    {
        return Core::db()->query('SELECT * FROM `services_`  order by `id` DESC')->fetchAll();
    }
    
    /**
     * Usuwa usługe...
     *
     *
     * @access static
     * @return array
     */
    static public function delete($id)
    {
        // Usuwanie odpowiednich flag użytkowniką którzy kupi tą usługę
        // Zmienianie wygaśnięcia na 0 aby flagi później zostały usunięte...
        $stmt = Core::db()->prepare('UPDATE `services_buy_cache_` SET `expired` = 0 where `service_id` = ?');
        $stmt -> execute(array($id));
            
        // Usuwanie wszystkich flag(tej usługi) użytkowniką którzy kupili tą usługę
        Service::refreshBuyCache();
            
        // Usuwanie wszystkich rekordów powiązanych z tą usługą
        $stmt = Core::db()->prepare('DELETE FROM `services_buy_cache_` where `service_id` = ?');
        $stmt -> execute(array($id));

        // Wykonajmy finalne zapytanie
        $res = Core::db()->prepare('DELETE FROM `services_` where `id` = ?');
        $res -> execute(array($id));
        $res = $res->rowCount();
        
        // Zwróćmy wynik
        return array($res, $res ? 'Usługa jak i wszystki flagi każdego użytkownika z nią powiązane zostały usunięte' : 'Taka usługa już nie istnieje');
    }
    
    
    /**
     * Zwraca wybrną usułgę...
     *
     * @param integer
     *
     * @access static
     * @return array
     */
    static public function get($id)
    {
        $stmt = Core::db()->prepare('SELECT * FROM `services_` where `id` = ? LIMIT 1');
        $stmt->execute(array($id));
        
        return $stmt->fetch();
    }
    
    /**
     * Dodaje nową usułgę...
     *
     * @param array
     *
     * @access static
     * @return array
     */
    static public function add($data)
    {
        if(!Service::allRequired($data))
        {
            return array(0, 'Musisz podać wszystkie pola');
        }
        
        
        $query = Core::db()->prepare('INSERT INTO `services_` VALUES(NULL, ?, ?, ?, ?, ?, ?, ?, ?, ?, 0)');

        $query->execute(array(
            $data['name'],
            $data['desc'],
            $data['flags'],
            (float)$data['cost_per_day'],
            (int)$data['min_day'],
            (int)$data['max_day'],
            $data['amxbans_id'],
            $data['server_id'],
            $data['allowed_group'],
        ));
        
        if($query->rowCount())
        {
            return array(1, 'Usułga została dodana');
        }
        
        return array(0, 'Nie udało się dodać usuługi...');
    }
    
    /**
     * Edytuje....
     *
     * @param array
     *
     * @access static
     * @return array
     */
    static public function edit($data)
    {
        if(!Service::allRequired($data))
        {
            return array(0, 'Musisz podać wszystkie pola');
        }
        
        $query = Core::db()->prepare(
            'UPDATE `services_` SET `name`=?, `desc`=?, `flags`=?, `cost_per_day`=?, `min_day`=?, `max_day`=?, `amxbans_id`=?, `server_id`=?, `allowed_group`=? ' .
            'where `id`=?'
        );
        
        $query->execute(array(
            $data['name'],
            $data['desc'],
            $data['flags'],
            (float)$data['cost_per_day'],
            (int)$data['min_day'],
            (int)$data['max_day'],
            $data['amxbans_id'],
            $data['server_id'],
            $data['allowed_group'],
            $data['id']
        ));
        
        if($query->rowCount())
        {
            return array(1, 'Usułga została zmodyfikowana');
        }

        return array(0, 'Prawdopodobnie usuła nie istnieje lub żadne dane nie zostały zmodyfikowane...');
    }
    
    /**
     * Zwraca czy wszystkie wymagane pola znajdują się w $data
     *
     * @param array
     *
     * @access static
     * @return bool
     */
    static public function allRequired($data)
    {
        $required = array(
            'name', 'desc', 'flags', 'amxbans_id', 'server_id', 'cost_per_day', 'allowed_group', 'max_day', 'min_day'
        );
        foreach($required as $name)
        {
            if(!isset($data[$name]) or empty($data[$name]))
            {
                return false;
            }
        }
        return true;
    }
    
    /**
     * Dodaje usługę do zakupionych, następne kupienie jest równoznaczne z jej przedłużeniem...
     * + Funkcja dodaje głównie rekord po to żeby po zakończeniu owej usługi zostały usunięte tylko zakupione flagi
     *
     * @param integer id użytkownika
     * @param integer id usługi
     * @param integer id użytkownika w amxbansie
     * @param integer na ile dni została kupiona usługa...
     *
     * @access static
     */
    static public function insertBuy($member_id, $service_id, $amxbans_member_id, $days)
    {
        // Pobierzmy usługę
        $service = Service::get($service_id);
    
        // Zaktualizujmy zarobek usługi
        $stmt = Core::db()->prepare('UPDATE `services_` SET `full_cash`=`full_cash` + ? where `id` = ?')
                                ->execute(array(round($days*$service['cost_per_day'], 2), $service_id));
        
        $query = 'SELECT * FROM `services_buy_cache_` WHERE `member_id` = ?  AND `service_id` = ? AND `amxbans_member_id` = ?';
        $stmt = Core::db()->prepare($query);
        $stmt->execute(array($member_id, $service_id, $amxbans_member_id));
        
        $time = time();
        if(!$stmt->rowCount())
        {
            $expired = ($time + (Date::DAY * $days)) - Date::HOUR;
        
            $stmt = Core::db()->prepare('INSERT INTO `services_buy_cache_` VALUES(NULL, ?, ?, ?, ?, ?, 1)');
            $stmt->execute(array($member_id, $service_id, $amxbans_member_id, $time, $expired));
        }
        else
        {
            $fetch = $stmt->fetch();
            
            $current_expired = $fetch['expired'];
            $expired         = ($current_expired < $time ? $time : $current_expired) + (Date::DAY * $days);
            $status          = $expired > $time ? 1 : 0;
            
            $stmt = Core::db()->prepare('UPDATE `services_buy_cache_` SET `expired` = ?, `status` = ? where `member_id` = ? AND `service_id` = ? AND `amxbans_member_id` = ?');
            $stmt->execute(array($expired, $status, $member_id, $service_id, $amxbans_member_id));
            
            // Naprawa bugu odnośnie nie przedłużania usług w amxbansie,
            // już przedłuża :)
            $amxbans =  new AmxBans();
            $amxbans =  $amxbans->connect($amxbans->getAmxBans($service['amxbans_id']));
            if($amxbans)
            {
                $amxbans->extend($amxbans_member_id, $expired, $service['flags']);
            }
        }
    }
    
    /**
     * Sprawdza czy czas usuługi(wszystkie usługi w bazie danych) już minął czy nie, jeśli tak to usuwa flagi...
     * Jeśli jest dużo zakupionych usług, może to chwile potrwać, max pare sekund :)
     *
     * @access static
     * @return string
     */
    static public function refreshBuyCache()
    {
        $stmt = Core::db()->query('SELECT c.*, s.`amxbans_id`, s.`flags` FROM `services_buy_cache_` c LEFT JOIN `services_` s ON s.`id` = c.`service_id` AND c.`status`=1');
        $all = $stmt->fetchAll();

        $time           = time();
        $amxbans_handle = new AmxBans();
        $remove = 0;
        
        $stmt = Core::db()->prepare('UPDATE `services_buy_cache_` SET `status` = 0 where `member_id` = ? AND `amxbans_member_id` = ? AND `service_id` = ?');
        foreach($all as $data)
        {
            if(!$data['amxbans_id'])
            {
                continue;
            }
            
            $amxbans = $amxbans_handle->getAmxBans($data['amxbans_id']);
            $amxbans = $amxbans_handle->connect($amxbans);
            
            if(!$amxbans)
            {
                continue;
            }
            
            if($data['expired'] <= $time)
            {
                $amxbans->usunFlagi($data['amxbans_member_id'], $data['flags']);
                $stmt->execute(array($data['member_id'], $data['amxbans_member_id'], $data['service_id']));
                $remove++;
            }
        }
        
        return $remove;
    }
    
    /**
     * Update dla buycache
     *
     * @param integer
     * @param string
     * @param string
     *
     * @access static
     * @return integer
     */
    static public function updateFromBuyCache($id, $key, $value)
    {
        $stmt = Core::db()->prepare('UPDATE `services_buy_cache_` SET `'.$key.'` = ? where `id` = ?');
        $stmt->execute(array($value, $id));
        return $stmt->rowCount();
    }
    
    
    /**
     * Zwraca listę zakupionych usług...
     *
     * @access static
     * @return array
     */
    static public function getFromBuyCache($id = 0)
    {
        if($id > 0)
        {
            $stmt = Core::db()->prepare('SELECT c.*, s.`name`, s.`amxbans_id`, s.`flags`, s.`min_day`, s.`max_day`, s.`cost_per_day`
                                            FROM `services_buy_cache_` c LEFT JOIN `services_` s ON s.`id` = c.`service_id` where c.`id` = ?
                                                order by c.`id` DESC');
            $stmt->execute(array($id));
            return $stmt->fetch();
        }
        else
        {
            return Core::db()->query('SELECT c.*, s.`name` FROM `services_buy_cache_` c LEFT JOIN `services_` s ON s.`id` = c.`service_id` order by c.`id` DESC')->fetchAll();
        }
    }
    
    /**
     * Zwraca listę/ilość zakupionych usług przez x użytkownika
     *
     * @param integer
     * @param string
     *
     * @access static
     * @return intger|array
     */
    static public function getMemberFromBuyCache($member_id, $type='list', $active = NULL)
    {
    
        // Przygotujmy odpowiednie zapytanie
        switch(strtolower($type))
        {
            default:
            case 'list':
                $stmt = Core::db()->prepare('SELECT * FROM `services_buy_cache_` where `member_id` = ? order by `id` DESC');
            break;
            case 'count':
                if($active === NULL)
                {
                    $stmt = Core::db()->prepare('SELECT COUNT(`id`) AS `count` FROM `services_buy_cache_` where `member_id` = ?');
                }
                else
                {
                    $stmt = Core::db()->prepare('SELECT COUNT(`id`) AS `count` FROM `services_buy_cache_` where `member_id` = ? AND `status` = 1');
                }
            break;
        }
        
        //  Wyślijmy zapytanie
        $stmt -> execute(array($member_id));
        
        // Jeśli chcemy pobrać ilość
        if($type == 'count')
        {
            // zwróćmy ilość
            $data = $stmt->fetch();
            return $data['count'];
        }
        // Zwróćmy wszystki rekordy
        return $stmt->fetchAll();
    }
}

Za pomoc daję + :)



#2 Cytrynowy

    Zaawansowany

  • Użytkownik

Reputacja: 18
Początkujący

  • Postów:84
  • Steam:steam
  • Imię:Patryk
  • Lokalizacja:Gdynia
Offline

Napisano 18.02.2014 19:54

static public function allRequired($data)
    {
        $required = array(
            'name', 'desc', 'flags', 'amxbans_id', 'server_id', 'cost_per_day', 'allowed_group', 'max_day', 'min_day'
        );
        foreach($required as $name)
        {
            if(!isset($data[$name]) or empty($data[$name]))
            {
                return true;
            }
        }
        return true;
    }

  • +
  • -
  • 0

#3 Ventri

    Wszechwidzący

  • Użytkownik

Reputacja: 82
Zaawansowany

  • Postów:227
  • Lokalizacja:Łódź
Offline

Napisano 18.02.2014 20:04

Czy masz świadomość że usługi (mogą) a właściwie na 100% nie będą nigdzie wpisywane ?


  • +
  • -
  • 0

4_22.png


#4 Cytrynowy

    Zaawansowany

  • Użytkownik

Reputacja: 18
Początkujący

  • Postów:84
  • Steam:steam
  • Imię:Patryk
  • Lokalizacja:Gdynia
Offline

Napisano 18.02.2014 21:36

Ale o puste pola nie będzie krzyczeć :D Fakt, nic się nie zapisze, brak bansa ;)


  • +
  • -
  • 0





Również z jednym lub większą ilością słów kluczowych: php

Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych