HEX
Server: Apache
System: Linux p3plzcpnl506847.prod.phx3.secureserver.net 4.18.0-553.54.1.lve.el8.x86_64 #1 SMP Wed Jun 4 13:01:13 UTC 2025 x86_64
User: slfopp7cb1df (5698090)
PHP: 8.1.34
Disabled: NONE
Upload Files
File: /home/slfopp7cb1df/www/conradinvestmentgroup.com/pm/plugins/Purchase/index.php
<?php

defined('PLUGINPATH') or exit('No direct script access allowed');
use App\Controllers\Security_Controller;

/*
  Plugin Name: Purchase 
  Description: Purchase Management Module is a tool for managing your day-to-day purchases. It is packed with all necessary features that are needed by any business, which has to buy raw material for manufacturing or finished good purchases for trading
  Version: 1.0.0
  Requires at least: 3.0
  Author: GreenTech Solutions
  Author URI: https://codecanyon.net/user/greentech_solutions
 */

if(!defined('PURCHASE_REVISION')){
    define('PURCHASE_REVISION', 100);    
}
if(!defined('PURCHASE_MODULE_UPLOAD_FOLDER')){
    define('PURCHASE_MODULE_UPLOAD_FOLDER', 'plugins/Purchase/Uploads/');    
}

app_hooks()->add_action('app_hook_head_extension', function (){
    $viewuri = $_SERVER['REQUEST_URI'];

    if (!(strpos($viewuri, '/purchase') === false)) {   
        echo '<script src="' . base_url('plugins/Purchase/assets/js/main/main.js').'?v=' . PURCHASE_REVISION.'"></script>';
        echo '<script src="' . base_url('plugins/Purchase/assets/plugins/signature_pad.min.js') . '"></script>';
    }
});
app_hooks()->add_action('app_hook_head_extension', function (){
    $viewuri = $_SERVER['REQUEST_URI'];
    $ci = new Security_Controller(false);

    if (!(strpos($viewuri, '/purchase') === false)) {   
        echo '<link href="' . base_url('plugins/Purchase/assets/css/main.css') .'?v=' . PURCHASE_REVISION. '"  rel="stylesheet" type="text/css" />';
    }

     if (!(strpos($viewuri, '/dashboard') === false) && $ci->login_user->user_type == 'vendor') {  
         echo '<link href="' . base_url('plugins/Purchase/assets/css/main.css') .'?v=' . PURCHASE_REVISION. '"  rel="stylesheet" type="text/css" />';
     }

    if (!(strpos($viewuri, '/purchase/items') === false)) {
        echo '<link href="' . base_url('plugins/Purchase/assets/css/items/item_modal.css') .'?v=' . PURCHASE_REVISION. '"  rel="stylesheet" type="text/css" />';
        
    }
});
app_hooks()->add_action('app_hook_role_permissions_extension', function (){
    $ci = new Security_Controller(false);
    $access_purchase = get_array_value($permissions, "purchase");
    if (is_null($access_purchase)) {
        $access_purchase = "";
    }

    echo '<li>
        <span data-feather="key" class="icon-14 ml-20"></span>
        <h5>'. app_lang("can_access_purchases").'</h5>
        <div>'.
            form_radio(array(
                "id" => "purchase_no",
                "name" => "purchase_permission",
                "value" => "",
                "class" => "form-check-input"
                    ), $access_purchase, ($access_purchase === "") ? true : false)
            .'<label for="purchase_no">'. app_lang("no").' </label>
        </div>
        <div>
            '. form_radio(array(
                "id" => "purchase_yes",
                "name" => "purchase_permission",
                "value" => "all",
                "class" => "form-check-input"
                    ), $access_purchase, ($access_purchase === "all") ? true : false).'
            <label for="purchase_yes">'. app_lang("yes").'</label>
        </div>
    </li>';
});

app_hooks()->add_filter('app_filter_role_permissions_save_data', function($permissions, $data) {
    $purchase = $data['purchase_permission'];

    $permissions = array_merge($permissions, ['purchase' => $purchase]);

    return $permissions;
});

app_hooks()->add_filter('app_filter_email_templates', function($templates_array) {
    $templates_array['purchase'] = [
        'purchase_order_to_contact' => ['PO_NUMBER', 'PO_NAME', 'PO_TAX_VALUE', 'PO_SUBTOTAL', 'PO_VALUE', 'PO_LINK', 'ORDER_DATE', 'CONTACT_NAME'],
        'purchase_quotation_to_contact' => ['PQ_NUMBER', 'PQ_TAX_VALUE', 'PQ_SUBTOTAL', 'PQ_VALUE', 'PQ_LINK', 'DATE', 'EXPIRY_DATE', 'CONTACT_NAME'],
        'purchase_request_to_contact' => ['PR_NUMBER', 'PR_NAME', 'PR_TAX_VALUE', 'PR_SUB_TOTAL', 'PR_VALUE', 'PR_LINK' , 'CONTACT_NAME']
    ];

    return $templates_array;
});

app_hooks()->add_filter('app_filter_notification_config', function($events) {
    $view_pur_request_link = function ($options) {
        $url = "";
        if (isset($options->pur_request_id)) {
            $url = get_uri("purchase/view_pur_request/" . $options->pur_request_id);
        }

        return array("url" => $url);
    };

    $view_quotation_link = function ($options) {
        $url = "";
        if (isset($options->pur_quotation_id)) {
            $url = get_uri("purchase/view_quotation/" . $options->pur_quotation_id);
        }

        return array("url" => $url);
    };

    $view_pur_order_link = function ($options) {
        $url = "";
        if (isset($options->pur_order_id)) {
            $url = get_uri("purchase/view_pur_order/" . $options->pur_order_id);
        }

        return array("url" => $url);
    };

    $payment_invoice_link = function ($options) {
        $url = "";
        if (isset($options->pur_payment_id)) {
            $url = get_uri("purchase/payment_invoice/" . $options->pur_payment_id);
        }

        return array("url" => $url);
    };

 
    
    $events["notify_send_request_approve_pur_request"] = [
            "notify_to" => array("team_members"),
            "info" => $view_pur_request_link
    ];

    $events["notify_send_approve_pur_request"] = [
            "notify_to" => array("team_members"),
            "info" => $view_pur_request_link
    ];

    $events["notify_send_rejected_pur_request"] = [
            "notify_to" => array("team_members"),
            "info" => $view_pur_request_link
    ];


    $events["notify_send_request_approve_pur_quotation"] = [
            "notify_to" => array("team_members"),
            "info" => $view_quotation_link
    ];

    $events["notify_send_approve_pur_quotation"] = [
            "notify_to" => array("team_members"),
            "info" => $view_quotation_link
    ];

    $events["notify_send_rejected_pur_quotation"] = [
            "notify_to" => array("team_members"),
            "info" => $view_quotation_link
    ];

    
    $events["notify_send_request_approve_pur_order"] = [
            "notify_to" => array("team_members"),
            "info" => $view_pur_order_link
    ];

    $events["notify_send_approve_pur_order"] = [
            "notify_to" => array("team_members"),
            "info" => $view_pur_order_link
    ];

    $events["notify_send_rejected_pur_order"] = [
            "notify_to" => array("team_members"),
            "info" => $view_pur_order_link
    ];


    $events["notify_send_request_approve_pur_inv"] = [
            "notify_to" => array("team_members"),
            "info" => $payment_invoice_link
    ];

    $events["notify_send_approve_pur_inv"] = [
            "notify_to" => array("team_members"),
            "info" => $payment_invoice_link
    ];

    $events["notify_send_rejected_pur_inv"] = [
            "notify_to" => array("team_members"),
            "info" => $payment_invoice_link
    ];

    return $events;
});

//add menu item to left menu
app_hooks()->add_filter('app_filter_client_left_menu', function($sidebar_menu) {

    $CI = new Security_Controller(false);

    $purchase_submenu = array();

    $purchase_submenu["vendor_profile"] = array(
        "name" => "profile", 
        "url" => "purchase/vendor/".get_vendor_user_id(), 
        "class" => "users"
    );
   

    $purchase_submenu["purchase_items"] = array(
        "name" => "items", 
        "url" => "purchase/vendor_portal_items", 
        "class" => "users"
    );
   
    $purchase_submenu["purchase_request"] = array(
        "name" => "purchase_request", 
        "url" => "purchase/purchase_request", 
        "class" => "users"
    );

    $purchase_submenu["quotations"] = array(
        "name" => "quotations", 
        "url" => "purchase/quotations", 
        "class" => "users"
    );

    $purchase_submenu["purchase_orders"] = array(
        "name" => "purchase_orders", 
        "url" => "purchase/purchase_orders", 
        "class" => "users"
    );

    $purchase_submenu["invoices"] = array(
        "name" => "invoices", 
        "url" => "purchase/invoices", 
        "class" => "users"
    );


    if($CI->login_user->user_type == 'vendor'){
        $sidebar_menu["purchase"] = array(
            "name" => "purchase",
            "url" => "purchase",
            "class" => "shopping-cart",
            "submenu" => $purchase_submenu,
            "position" => 5,

        );

        foreach ($sidebar_menu as $key => $menu) {
            if($key != 'purchase'){
                unset($sidebar_menu[$key]);
            }
        }
    }

    return $sidebar_menu;

});

app_hooks()->add_filter('app_filter_staff_left_menu', function ($sidebar_menu) {
    $purchase_submenu = array();

    $ci = new Security_Controller(false);
    $permissions = $ci->login_user->permissions;
    if ($ci->login_user->is_admin || get_array_value($permissions, "inventory")) {

        $purchase_submenu["purchase_items"] = array(
            "name" => "items", 
            "url" => "purchase/items", 
            "class" => "users"
        );
       
        $purchase_submenu["vendors"] = array(
            "name" => "vendors", 
            "url" => "purchase/vendors", 
            "class" => "users"
        );

        $purchase_submenu["vendor_items"] = array(
            "name" => "vendor_items", 
            "url" => "purchase/vendor_items", 
            "class" => "newspaper"
        );

        $purchase_submenu["purchase_request"] = array(
            "name" => "purchase_request", 
            "url" => "purchase/purchase_request", 
            "class" => "users"
        );

        $purchase_submenu["quotations"] = array(
            "name" => "quotations", 
            "url" => "purchase/quotations", 
            "class" => "users"
        );

        $purchase_submenu["purchase_orders"] = array(
            "name" => "purchase_orders", 
            "url" => "purchase/purchase_orders", 
            "class" => "users"
        );


        $purchase_submenu["invoices"] = array(
            "name" => "invoices", 
            "url" => "purchase/invoices", 
            "class" => "users"
        );


        $purchase_submenu["settings"] = array(
            "name" => "settings", 
            "url" => "purchase/settings", 
            "class" => "setting"
        );

        $sidebar_menu["purchase"] = array(
            "name" => "purchase",
            "url" => "purchase",
            "class" => "shopping-cart",
            "submenu" => $purchase_submenu,
            "position" => 5,

        );
    }

    return $sidebar_menu;

});



//install dependencies
register_installation_hook("Purchase", function ($item_purchase_code) {
    /*
     * you can verify the item puchase code from here if you want. 
     * you'll get the inputted puchase code with $item_purchase_code variable
     * use exit(); here if there is anything doesn't meet it's requirements
     */
    include PLUGINPATH . "Purchase/lib/gtsverify.php";
    require_once(__DIR__ . '/install.php');
});

// Active action
register_activation_hook("Purchase", function ($item_purchase_code) {
       require_once(__DIR__ . '/install.php');
});

//uninstallation: remove data from database
register_uninstallation_hook("Purchase", function () {
    require_once __DIR__ . '/uninstall.php';
});

//add setting link to the plugin setting
app_hooks()->add_filter('app_filter_action_links_of_Purchase', function () {
    $action_links_array = array(
        anchor(get_uri("purchase"), "Purchase"),
        anchor(get_uri("purchase/settings"), "Purchase settings"),
    );

    return $action_links_array;
});

//update plugin
register_update_hook("Purchase", function () {
    echo "Please follow this instructions to update:";
    echo "<br />";
    echo "Your logic to update...";
});

//uninstallation: remove data from database
register_uninstallation_hook("Purchase", function () {
    $dbprefix = get_db_prefix();
    $db = db_connect('default');

    $sql_query = "DROP TABLE IF EXISTS `" . $dbprefix . "purchase_settings`;";
    $db->query($sql_query);
});
app_hooks()->add_action('app_hook_purchase_init', function (){
    require_once __DIR__ .'/lib/gtsslib.php';
    $lic_purchase = new PurchaseLic();
    $purchase_gtssres = $lic_purchase->verify_license(true);    
    if(!$purchase_gtssres || ($purchase_gtssres && isset($purchase_gtssres['status']) && !$purchase_gtssres['status'])){
        echo '<strong>YOUR PURCHASE PLUGIN FAILED ITS VERIFICATION. PLEASE <a href="/index.php/Plugins">REINSTALL</a> OR CONTACT SUPPORT</strong>';
        exit();
    } 
});
app_hooks()->add_action('app_hook_uninstall_plugin_Purchase', function (){
    require_once __DIR__ .'/lib/gtsslib.php';
    $lic_purchase = new PurchaseLic();
    $lic_purchase->deactivate_license();    
});