⚝
One Hat Cyber Team
⚝
Your IP:
216.73.216.50
Server IP:
41.128.143.86
Server:
Linux host.raqmix.cloud 6.8.0-1025-azure #30~22.04.1-Ubuntu SMP Wed Mar 12 15:28:20 UTC 2025 x86_64
Server Software:
Apache
PHP Version:
8.3.23
Buat File
|
Buat Folder
Eksekusi
Dir :
~
/
proc
/
self
/
root
/
usr
/
share
/
psa-horde
/
mnemo
/
lib
/
View File Name :
Application.php
true, 'modseq' => true, ); /** */ public $version = 'H5 (4.2.14)'; /** * Global variables defined: * $mnemo_shares - TODO */ protected function _init() { /* For now, autoloading the Content_* classes depend on there being a * registry entry for the 'content' application that contains at least * the fileroot entry. */ $GLOBALS['injector']->getInstance('Horde_Autoloader') ->addClassPathMapper( new Horde_Autoloader_ClassPathMapper_Prefix('/^Content_/', $GLOBALS['registry']->get('fileroot', 'content') . '/lib/')); if (!class_exists('Content_Tagger')) { throw new Horde_Exception(_("The Content_Tagger class could not be found. Make sure the Content application is installed.")); } Mnemo::initialize(); } /** */ public function perms() { return array( 'max_notes' => array( 'title' => _("Maximum Number of Notes"), 'type' => 'int' ) ); } /** */ public function menu($menu) { global $conf, $injector; $menu->add(Horde::url('list.php'), _("_List Notes"), 'mnemo-list', null, null, null, basename($_SERVER['PHP_SELF']) == 'index.php' ? 'current' : null); /* Search. */ $menu->add(Horde::url('search.php'), _("_Search"), 'mnemo-search'); /* Import/Export */ if ($conf['menu']['import_export']) { $menu->add(Horde::url('data.php'), _("_Import/Export"), 'horde-data'); } } /** * Add additional items to the sidebar. * * @param Horde_View_Sidebar $sidebar The sidebar object. */ public function sidebar($sidebar) { $perms = $GLOBALS['injector']->getInstance('Horde_Core_Perms'); if (Mnemo::getDefaultNotepad(Horde_Perms::EDIT) && ($perms->hasAppPermission('max_notes') === true || $perms->hasAppPermission('max_notes') > Mnemo::countMemos())) { $sidebar->addNewButton( _("_New Note"), Horde::url('memo.php')->add('actionID', 'add_memo')); } $url = Horde::url(''); $edit = Horde::url('notepads/edit.php'); $user = $GLOBALS['registry']->getAuth(); $sidebar->containers['my'] = array( 'header' => array( 'id' => 'mnemo-toggle-my', 'label' => _("My Notepads"), 'collapsed' => false, ), ); if (!$GLOBALS['prefs']->isLocked('default_notepad')) { $sidebar->containers['my']['header']['add'] = array( 'url' => Horde::url('notepads/create.php'), 'label' => _("Create a new Notepad"), ); } $sidebar->containers['shared'] = array( 'header' => array( 'id' => 'mnemo-toggle-shared', 'label' => _("Shared Notepads"), 'collapsed' => true, ), ); foreach (Mnemo::listNotepads() as $name => $notepad) { $url->add(array( 'display_notepad' => $name, 'actionID' => in_array($name, $GLOBALS['display_notepads']) ? 'remove_displaylist' : 'add_displaylist' )); $row = array( 'selected' => in_array($name, $GLOBALS['display_notepads']), 'url' => $url, 'label' => Mnemo::getLabel($notepad), 'color' => $notepad->get('color') ?: '#dddddd', 'edit' => $edit->add('n', $notepad->getName()), 'type' => 'checkbox', ); if ($notepad->get('owner') == $user) { $sidebar->addRow($row, 'my'); } else { $sidebar->addRow($row, 'shared'); } } } /** */ public function hasPermission($permission, $allowed, $opts = array()) { if (is_array($allowed)) { switch ($permission) { case 'max_notes': $allowed = max($allowed); break; } } return $allowed; } /* Topbar method. */ /** */ public function topbarCreate(Horde_Tree_Renderer_Base $tree, $parent = null, array $params = array()) { global $registry; $add = Horde::url('memo.php', true)->add('actionID', 'add_memo'); $tree->addNode(array( 'id' => $parent . '__new', 'parent' => $parent, 'label' => _("New Note"), 'expanded' => false, 'params' => array( 'icon' => Horde_Themes::img('add.png'), 'url' => $add ) )); $user = $registry->getAuth(); foreach (Mnemo::listNotepads(false, Horde_Perms::SHOW) as $name => $notepad) { if (!$notepad->hasPermission($user, Horde_Perms::EDIT)) { continue; } $tree->addNode(array( 'id' => $parent . $name . '__new', 'parent' => $parent . '__new', 'label' => sprintf(_("in %s"), Mnemo::getLabel($notepad)), 'expanded' => false, 'params' => array( 'icon' => Horde_Themes::img('add.png'), 'url' => $add->copy()->add('memolist', $name) ) )); } $tree->addNode(array( 'id' => $parent . '__search', 'parent' => $parent, 'label' => _("Search"), 'expanded' => false, 'params' => array( 'icon' => Horde_Themes::img('search.png'), 'url' => Horde::url('search.php') ) )); } /** */ public function removeUserData($user) { $error = false; $notepads = $GLOBALS['mnemo_shares']->listShares( $user, array('attributes' => $user)); foreach ($notepads as $notepad => $share) { $driver = $GLOBALS['injector'] ->getInstance('Mnemo_Factory_Driver') ->create($notepad); try { $driver->deleteAll(); } catch (Mnemo_Exception $e) { Horde::log($e, 'NOTICE'); $error = true; } try { $GLOBALS['mnemo_shares']->removeShare($share); } catch (Horde_Share_Exception $e) { Horde::log($e, 'NOTICE'); $error = true; } } // Get a list of all shares this user has perms to and remove the perms. try { $shares = $GLOBALS['mnemo_shares']->listShares($user); foreach ($shares as $share) { $share->removeUser($user); } } catch (Horde_Share_Exception $e) { Horde::log($e, 'NOTICE'); $error = true; } if ($error) { throw new Mnemo_Exception(sprintf(_("There was an error removing notes for %s. Details have been logged."), $user)); } } /* Download data. */ /** * @throws Mnemo_Exception */ public function download(Horde_Variables $vars) { global $injector, $registry; switch ($vars->actionID) { case 'export': /* Get the full, sorted memo list. */ $notes = Mnemo::listMemos(); switch ($vars->exportID) { case Horde_Data::EXPORT_CSV: $data = array(); foreach ($notes as $note) { unset( $note['desc'], $note['memo_id'], $note['memolist_id'], $nore['uid'] ); $note['tags'] = implode(',', $note['tags']); if ($note['body'] instanceof Mnemo_Exception) { $note['body'] = $note['body']->getMessage(); } $data[] = $note; } $injector->getInstance('Horde_Core_Factory_Data') ->create('Csv', array('cleanup' => array($this, 'cleanupData'))) ->exportFile(_("notes.csv"), $data, true); exit; } } } /** */ public function cleanupData() { $GLOBALS['import_step'] = 1; return Horde_Data::IMPORT_FILE; } }