File: /var/www/zaklada/wp-content/plugins/dinamo-foundation-plugin/heart-messages/messages_service.php
<?php
Class dinamo_donator_messages_service
{
    function __construct()
    {
    }
    // Create Message
    function create_message($message, $language){
        global $wpdb;
        $table_name = $wpdb->prefix . 'dinamo_donator_messages';
         $wpdb->insert(
            $table_name,
            array(
                'message'  => $message,
                'approved' => false,
                'language' => $language,
                'time'     => current_time('mysql', 1),
            ),
            array(
                '%s',
                '%d',
                '%s',
                '%s'
            )
        );
        return $wpdb->insert_id;
    }
    // Set Message approve status
    function set_message_approve_status($message_id, $status){
        global $wpdb;
        $table_name = $wpdb->prefix . 'dinamo_donator_messages'; 
        $wpdb->update($table_name, array('approved'=>$status), array('id'=>$message_id));
    }
    // Get Message
    function get_message($message_id){
      global $wpdb;
      $table_name = $wpdb->prefix . 'dinamo_donator_messages';
      $sql = "SELECT * FROM $table_name WHERE id = $message_id";
      $data = $wpdb->get_row($sql);
      if($data){
          return $data;
      }else{
          return false;
      }
    }    
    // Get filtered Messages (for admin messages table pagination)
    function get_filter_messages($pageSize, $page, $language) {
      global $wpdb;
      $table_name = $wpdb->prefix . 'dinamo_donator_messages';
      $language_sql = ($language == "hr") ? "(language = '" . $language . "' OR language IS NULL)" : " language = '" . $language . "'";  
      
      $offset = ($page - 1) * $pageSize;
      $sql = "SELECT * FROM $table_name WHERE $language_sql ORDER BY id DESC" ;
      $sql_data_query= $sql . " LIMIT $offset, $pageSize" ;
      $data = $wpdb->get_results($sql_data_query);
      
      $sql_count_query = "select count(*) as total from $table_name WHERE $language_sql order by time DESC";
      $count = $wpdb->get_row($sql_count_query);
      if($data){
          return array(
              'total' => $count->total,
              'data' => $data
          );
      }else{
          return false;
      }
    }
    //Get Message
    function get_messages($total, $language){
        global $wpdb;
        $table_name = $wpdb->prefix . 'dinamo_donator_messages';
        $language_sql = ($language == "hr") ? "AND (language = '" . $language . "' OR language IS NULL)" : "AND language = '" . $language . "'";  
        $sql = "SELECT * FROM $table_name WHERE approved = 1 $language_sql ORDER BY RAND() LIMIT $total" ;
        $data = $wpdb->get_results($sql);
        if($data){
            return $data;
        }else{
            return false;
        }
    }
    
    // Delete Message
    function delete_message($message_id){
      global $wpdb;
      $table_name = $wpdb->prefix . 'dinamo_donator_messages';
      $wpdb->delete( $table_name, array( 'id' => $message_id ) );
      if($data){
          return $data;
      }else{
          return false;
      }
    }
    
    // Edit Message
    function edit_message($message_id, $message){
      if(current_user_can( 'administrator' )){
        global $wpdb;
        $table_name = $wpdb->prefix . 'dinamo_donator_messages';
    
    
        $result=$wpdb->update(
            $table_name,
            array(
                'message' => $message,
            ),
            array(
                "id" => $message_id,
    
            )
        );
    
        if ($result) {
            return array(
                "success" => true,
            );
        } else {
            return array(
                "success" => false
            );
        }
      }else {
          return array(
              "success" => false
          );
      }
    }
}