⚝
One Hat Cyber Team
⚝
Your IP:
216.73.216.82
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
/
turba
/
Edit File: search.php
<?php /** * Turba search.php. * * Copyright 2000-2017 Horde LLC (http://www.horde.org/) * * See the enclosed file LICENSE for license information (ASL). If you * did not receive this file, see http://www.horde.org/licenses/apache. * * @author Chuck Hagenbuch <chuck@horde.org> * @author Jan Schneider <jan@horde.org> */ require_once __DIR__ . '/lib/Application.php'; Horde_Registry::appInit('turba'); $vars = Horde_Variables::getDefaultVariables(); /* Verify if the search mode variable is passed in form or is registered in * the session. Always use basic search by default. */ if ($vars->search_mode) { $session->set('turba', 'search_mode', $vars->search_mode); } if (!in_array($session->get('turba', 'search_mode'), array('basic', 'advanced', 'duplicate'))) { $session->set('turba', 'search_mode', 'basic'); } $search_mode = $session->get('turba', 'search_mode'); /* Get the current source. */ $addressBooks = Turba::getAddressBooks(); $editableAddressBooks = Turba::getAddressBooks(Horde_Perms::EDIT & Horde_Perms::DELETE, array('require_add' => true)); if ($search_mode == 'duplicate') { $addressBooks = $editableAddressBooks; } $source = $vars->get('source', Turba::$source); if (!isset($addressBooks[$source])) { $source = key($addressBooks); /* If there are absolutely no valid sources, abort. */ if (!isset($addressBooks[$source])) { $notification->push(_("No Address Books are currently available. Searching is disabled."), 'horde.error'); $page_output->header(); $notification->notify(array('listeners' => 'status')); $page_output->footer(); exit; } } /* Build all available search criteria. */ $allCriteria = $shareSources = array(); foreach ($addressBooks as $key => $entry) { $allCriteria[$key] = array('' => _("All")); foreach ($entry['search'] as $field) { $allCriteria[$key][$field] = $GLOBALS['attributes'][$field]['label']; } /* Remember vbooks and sources that are using shares. */ $shareSources[$key] = $entry['type'] != 'vbook'; } $criteria = $vars->criteria; $val = $vars->val; try { $driver = $injector->getInstance('Turba_Factory_Driver')->create($source); } catch (Turba_Exception $e) { $notification->push($e, 'horde.error'); $driver = null; $map = array(); } if ($driver) { $map = $driver->getCriteria(); $do_search = false; $submitted = Horde_Util::getFormData('search'); $browsable = !empty($cfgSources[$source]['browse']) && !empty($submitted); switch ($search_mode) { case 'advanced': $criteria = array(); foreach (array_keys($map) as $key) { if ($key != '__key') { $value = $vars->get($key); if (strlen($value)) { $criteria[$key] = $value; } } } if (count($criteria) || $browsable) { $do_search = true; } break; case 'basic': $t_val = trim($val); if (empty($t_val)) { if ($browsable) { $do_search = true; } $criteria = array(); break; } if (!strlen($criteria)) { /* Searching all fields in basic search. */ $criteria = array_combine( array_filter(array_keys($allCriteria[$source])), array_fill(0, count($allCriteria[$source]) - 1, $val) ); } else { $criteria = array($criteria => $val); } $do_search = true; break; case 'duplicate': $do_search = $vars->search || $vars->dupe || count($addressBooks) == 1; break; } /* Check for updated sort criteria */ Turba::setPreferredSortOrder($vars, $source); /* Only try to perform a search if we actually have search criteria. */ if ($do_search) { if ($vars->save_vbook) { try { $session->checkToken($vars->token); } catch (Horde_Exception $e) { $notification->push($e); Horde::url('search.php', true)->redirect(); } /* We create the vbook and redirect before we try to search * since we are not displaying the search results on this page * anyway. */ $vname = $vars->vbook_name; if (empty($vname)) { $notification->push(_("You must provide a name for virtual address books."), 'horde.error'); Horde::url('search.php', true)->redirect(); } /* Create the vbook. */ $params = array( 'name' => $vname, 'params' => serialize(array( 'type' => 'vbook', 'source' => $source, 'criteria' => $criteria )) ); try { $share = Turba::createShare(strval(new Horde_Support_Randomid()), $params); $vid = $share->getName(); } catch (Horde_Share_Exception $e) { $notification->push(sprintf(_("There was a problem creating the virtual address book: %s"), $e->getMessage()), 'horde.error'); Horde::url('search.php', true)->redirect(); } $notification->push(sprintf(_("Successfully created virtual address book \"%s\""), $vname), 'horde.success'); Horde::url('browse.php', true) ->add('source', $vid) ->redirect(); } /* Perform a search. */ if ($search_mode == 'duplicate') { try { $duplicates = $driver->searchDuplicates(); $view = new Turba_View_Duplicates($duplicates, $driver, $vars->type, $vars->dupe); $page_output->addScriptFile('tables.js', 'horde'); } catch (Exception $e) { $notification->push($e); } } else { try { if ((($search_mode == 'basic') && ($results = $driver->search($criteria, null, 'OR'))) || (($search_mode == 'advanced') && ($results = $driver->search($criteria)))) { /* Read the columns to display from the preferences. */ $sources = Turba::getColumns(); $columns = isset($sources[$source]) ? $sources[$source] : array(); $results->sort(Turba::getPreferredSortOrder()); $view = new Turba_View_List($results, null, $columns); $view->setType('search'); } else { $notification->push(_("Failed to search the address book"), 'horde.error'); } } catch (Turba_Exception $e) { $notification->push($e, 'horde.error'); } } } } /* Build search mode tabs. */ $sUrl = Horde::url('search.php'); $tabs = new Horde_Core_Ui_Tabs('search_mode', $vars); $tabs->addTab(_("Basic Search"), $sUrl, 'basic'); $tabs->addTab(_("Advanced Search"), $sUrl, 'advanced'); if (count($editableAddressBooks)) { $tabs->addTab(_("Duplicate Search"), $sUrl, 'duplicate'); } /* The form header. */ $headerView = new Horde_View(array('templatePath' => TURBA_TEMPLATES . '/search')); if (count($addressBooks) == 1) { $headerView->uniqueSource = key($addressBooks); } /* The search forms. */ $searchView = new Horde_View(array('templatePath' => TURBA_TEMPLATES . '/search')); new Horde_View_Helper_Text($searchView); $searchView->addressBooks = $addressBooks; $searchView->attributes = $GLOBALS['attributes']; $searchView->map = $map; $searchView->blobs = $driver->getBlobs(); $searchView->source = $source; $searchView->criteria = $criteria; $searchView->value = $val; /* The form footer and vbook section. */ if ($search_mode != 'duplicate' && $session->get('turba', 'has_share')) { $vbookView = new Horde_View(array('templatePath' => TURBA_TEMPLATES . '/search')); $vbookView->hasShare = true; $vbookView->shareSources = $shareSources; $vbookView->source = $source; $vbookView->token = $session->getToken(); $page_output->addInlineScript('$(\'vbook_name\').observe(\'keyup\', function() { $(\'save-vbook\').checked = !!$F(\'vbook_name\'); });'); } switch ($search_mode) { case 'basic': $title = _("Basic Search"); $page_output->addInlineScript(array( '$("val").focus()' ), true); $page_output->addInlineJsVars(array( 'TurbaSearch.criteria' => $allCriteria, 'TurbaSearch.shareSources' => $shareSources)); break; case 'advanced': $title = _("Advanced Search"); if (isset($results)) { $page_output->addInlineJsVars(array( 'TurbaSearch.advanced' => true )); } $page_output->addInlineScript(array( '$("name").focus()' ), true); break; case 'duplicate': $title = _("Duplicate Search"); break; } $page_output->addScriptFile('search.js'); $page_output->addScriptFile('quickfinder.js', 'horde'); $page_output->addScriptFile('scriptaculous/effects.js', 'horde'); $page_output->addScriptFile('redbox.js', 'horde'); if (isset($view) && is_object($view)) { Turba::addBrowseJs(); } $page_output->header(array( 'title' => $title )); $notification->notify(array('listeners' => 'status')); echo $tabs->render($search_mode); echo $headerView->render('header'); echo $searchView->render($search_mode); if (!empty($vbookView)) { echo $vbookView->render('vbook'); } echo $searchView->render('footer'); if (isset($view) && is_object($view)) { require TURBA_TEMPLATES . '/browse/header.inc'; $view->display(); } $page_output->footer();
Simpan