Exception:
Array
(
    [message] => Class "View" not found
    [file] => /home/sitii/web/hesty.namlasys.my.id/public_html/plugins/contact-form/plugin.php
    [line_no] => 120
    [line] => 		$this->view = View::getInstance();	 // <==

    [lines] => Array
        (
            [0] => 	function install() {

            [1] => 		$install = new Install();

            [2] => 		$install->run();

            [3] => 	}

            [4] => 

            [5] => 	function app() {

            [6] => 		// include code contact forms to preserve input values on form submit

            [7] => 		$this->view = View::getInstance();	 // <==

            [8] => 		$template   = $this->view->getTemplateEngineInstance();

            [9] => 		$template->loadTemplateFile(__DIR__ . '/app/template/contact-form.tpl');

            [10] => 	}

            [11] => 

            [12] => 	function __construct() {

            [13] => 		if (APP == 'admin') {

        )

    [trace] => #0 /home/sitii/web/hesty.namlasys.my.id/public_html/plugins/contact-form/plugin.php(130): ContactFormPlugin->app()
#1 /home/sitii/web/hesty.namlasys.my.id/public_html/plugins/contact-form/plugin.php(135): ContactFormPlugin->__construct()
#2 /home/sitii/web/hesty.namlasys.my.id/public_html/system/extensions/plugins.php(318): include('...')
#3 /home/sitii/web/hesty.namlasys.my.id/public_html/system/core/startup.php(508): Vvveb\System\Extensions\Plugins::loadPlugins()
#4 /home/sitii/web/hesty.namlasys.my.id/public_html/index.php(120): Vvveb\System\Core\start()
#5 /home/sitii/web/hesty.namlasys.my.id/public_html/index.php(166): Vvveb\saveCache()
#6 {main}
    [code] => Array
        (
            [0] =>  

            [2] => /**

            [3] =>  * Vvveb

            [4] =>  *

            [5] =>  * Copyright (C) 2022  Ziadin Givan

            [6] =>  *

            [7] =>  * This program is free software: you can redistribute it and/or modify

            [8] =>  * it under the terms of the GNU Affero General Public License as

            [9] =>  * published by the Free Software Foundation, either version 3 of the

            [10] =>  * License, or (at your option) any later version.

            [11] =>  *

            [12] =>  * This program is distributed in the hope that it will be useful,

            [13] =>  * but WITHOUT ANY WARRANTY; without even the implied warranty of

            [14] =>  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the

            [15] =>  * GNU Affero General Public License for more details.

            [16] =>  *

            [17] =>  * You should have received a copy of the GNU Affero General Public License

            [18] =>  * along with this program.  If not, see .

            [19] =>  *

            [20] =>  */

            [21] => 

            [22] => /*

            [23] => Name: Contact form

            [24] => Slug: contact-form

            [25] => Category: email

            [26] => Url: https://www.vvveb.com

            [27] => Description: Create contact forms that sends email or saves data in the database

            [28] => Thumb: contact-form.svg

            [29] => Author: givanz

            [30] => Version: 0.1

            [31] => Author url: https://www.vvveb.com

            [32] => Settings: /admin/index.php?module=plugins/contact-form/messages

            [33] => */

            [34] => 

            [35] => use function Vvveb\arrayInsertArrayAfter;

            [36] => use Vvveb\Plugins\ContactForm\Install;

            [37] => use Vvveb\System\Event;

            [38] => 

            [39] => if (! defined('V_VERSION')) {

            [40] => 	die('Invalid request!');

            [41] => }

            [42] => 

            [43] => #[\AllowDynamicProperties]

            [44] => class ContactFormPlugin {

            [45] => 	function admin() {

            [46] => 		// add admin menu item

            [47] => 		$admin_path = \Vvveb\adminPath();

            [48] => 

            [49] => 		// add messages count to notifications

            [50] => 		Event::on('Vvveb\Component\Notifications', 'results', __CLASS__, function ($results) {

            [51] => 			// get number of unread messages

            [52] => 			$message = model('Plugins\ContactForm\Message');

            [53] => 			$status = $message->getStatusCount(['status' => 0]);

            [54] => 			$unread = $status['count'] ?? 0;

            [55] => 

            [56] => 			$messages = [];

            [57] => 			$messages['badge'] = $unread;

            [58] => 

            [59] => 			// if unread messages add notification with number of messages to the menu entry

            [60] => 			if ($unread) {

            [61] => 				//$menuEntry['badge'] = $unread;

            [62] => 				$messages['badge-class'] = 'badge bg-success-subtle text-body mx-2';

            [63] => 				$messages['icon'] = ($unread ? 'icon-mail-unread-outline' : 'icon-mail-outline');

            [64] => 			}

            [65] => 

            [66] => 			$results['menu']['messages'] = $messages;

            [67] => 

            [68] => 			return [$results];

            [69] => 		});

            [70] => 

            [71] => 		Event::on('Vvveb\Controller\Base', 'init-menu', __CLASS__, function ($menu) use ($admin_path) {

            [72] => 			// add menu entry under plugins submenu

            [73] => 			$menu['plugins']['items']['contact-form'] = [

            [74] => 				'name'     => __('Contact form'),

            [75] => 				'url'      => $admin_path . 'index.php?module=plugins/contact-form/messages',

            [76] => 				'icon'     => 'icon-mail-outline',

            [77] => 				//'icon-img' => PUBLIC_PATH . 'plugins/contact-form/contact-form.svg',

            [78] => 				'module'   => 'plugins/contact-form/messages',

            [79] => 				'action'   => 'index',

            [80] => 			];

            [81] => 

            [82] => 			// add shortcut to messages page to top level menu

            [83] => 			$menuEntry = [

            [84] => 				'name'     => __('Messages'),

            [85] => 				'url'      => $admin_path . 'index.php?module=plugins/contact-form/messages',

            [86] => 				'icon'     => 'icon-mail-outline',

            [87] => 				'module'   => 'plugins/contact-form/messages',

            [88] => 				'action'   => 'index',

            [89] => 			];

            [90] => 

            [91] => 			$menu = arrayInsertArrayAfter('users', $menu, ['messages' => $menuEntry]);

            [92] => 

            [93] => 			return [$menu];

            [94] => 		});

            [95] => 

            [96] => 		// include plugin component when the page builder loads

            [97] => 		Event::on('Vvveb\Controller\Editor\Editor', 'loadThemeAssets', __CLASS__, function ($assets) {

            [98] => 			$assets['components']['contact-form'] = '../../plugins/contact-form/editor/components.js';

            [99] => 

            [100] => 			return [$assets];

            [101] => 		});

            [102] => 

            [103] => 		// when plugin is installed first time run install and create tables if not created

            [104] => 		Event::on('Vvveb\System\Extensions\Plugins', 'setup', __CLASS__, function ($pluginName, $siteId) {

            [105] => 			if ($pluginName == 'contact-form') {

            [106] => 				$this->install();

            [107] => 			}

            [108] => 

            [109] => 			return [$pluginName, $siteId];

            [110] => 		});

            [111] => 	}

            [112] => 

            [113] => 	function install() {

            [114] => 		$install = new Install();

            [115] => 		$install->run();

            [116] => 	}

            [117] => 

            [118] => 	function app() {

            [119] => 		// include code contact forms to preserve input values on form submit

            [120] => 		$this->view = View::getInstance();	 // <==

            [121] => 		$template   = $this->view->getTemplateEngineInstance();

            [122] => 		$template->loadTemplateFile(__DIR__ . '/app/template/contact-form.tpl');

            [123] => 	}

            [124] => 

            [125] => 	function __construct() {

            [126] => 		if (APP == 'admin') {

            [127] => 			$this->admin();

            [128] => 		} elseif (APP == 'app') {

            [129] => 			$this->app();

            [130] => 		}

            [131] => 	}

            [132] => }

            [133] => 

            [134] => $contactFormPlugin = new ContactFormPlugin();

        )

)