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();
)
)