Seditio Source
Root |
./othercms/PHPFusion 9.10.20/includes/classes/PHPFusion/AdminSearch.php
<?php
/*-------------------------------------------------------+
| PHPFusion Content Management System
| Copyright (C) PHP Fusion Inc
| https://phpfusion.com/
+--------------------------------------------------------+
| Filename: AdminSearch.php
| Author: RobiNN
+--------------------------------------------------------+
| This program is released as free software under the
| Affero GPL license. You can redistribute it and/or
| modify it under the terms of this license which you
| can read by viewing the included agpl.txt or online
| at www.gnu.org/licenses/agpl.html. Removal of this
| copyright header is strictly prohibited without
| written permission from the original author(s).
+--------------------------------------------------------*/
namespace PHPFusion;

/**
 * Class AdminSearch
 *
 * @package PHPFusion
 */
class AdminSearch {
   
/**
     * @var array
     */
   
private $result = [
       
'data'   => [],
       
'count'  => 0,
       
'status' => ''
   
];

   
/**
     * Return results in json
     *
     * @return false|string|null
     */
   
public function result() {
       
$locale = fusion_get_locale('', LOCALE.LOCALESET.'admin/main.php');

        if (
$this->authorizeAid()) {
            if (
fusion_safe()) {
               
$search_string = (string)filter_input(INPUT_GET, 'pagestring');

                if (isset(
$search_string)) {
                   
$available_pages = Admins::getInstance()->getAdminPages();

                    if (
strlen($search_string) >= 2) {
                       
$pages = flatten_array($available_pages);
                       
$result_rows = 0;

                        if (!empty(
$pages)) {
                            foreach (
$pages as $page) {
                                if (
stristr($page['admin_title'], $search_string) == TRUE || stristr($page['admin_link'], $search_string) == TRUE) {
                                   
$this->result['data'][] = $page;
                                   
$result_rows++;
                                }
                            }
                        } else {
                           
$this->result['status'] = 102;
                        }

                        if (
$result_rows > 0) {
                           
$this->result['count'] = $result_rows;
                        } else {
                           
$this->result['status'] = 104;
                        }
                    } else {
                       
$this->result['status'] = 103;
                    }
                }

               
$results = [];
               
$results['status'] = !empty($this->result['status']) ? $locale['search_msg_'.$this->result['status']] : '';

                if (!empty(
$this->result)) {
                   
$this->setResult($this->result);

                    if (!empty(
$this->result['data'])) {
                        foreach (
$this->result['data'] as $data) {
                            if (
stristr($data['admin_link'], '/infusions/')) {
                               
$link = fusion_get_settings('siteurl').'infusions/'.$data['admin_link'];
                            } else {
                               
$link = fusion_get_settings('siteurl').'administration/'.$data['admin_link'];
                            }

                           
$link = $link.fusion_get_aidlink();

                           
$title = $data['admin_title'];

                            if (
$data['admin_page'] !== 5) {
                               
$title = isset($locale[$data['admin_rights']]) ? $locale[$data['admin_rights']] : $title;
                            }

                           
$icon = strtr(get_image('ac_'.$data['admin_rights']), [
                               
INFUSIONS => fusion_get_settings('siteurl').'infusions/',
                               
ADMIN     => fusion_get_settings('siteurl').'administration/'
                           
]);

                            if (
checkrights($data['admin_rights'])) {
                               
$result = [
                                   
'title' => $title,
                                   
'link'  => $link,
                                   
'icon'  => $icon
                               
];

                               
array_push($results, $result);
                            }
                        }
                    }
                }

                return
json_encode($results);
            } else {
               
$this->result['status'] = 101;
            }
        } else {
           
$this->result['status'] = 100;
        }

        return
NULL;
    }

   
/**
     * Check aidlink
     *
     * @return bool
     */
   
private function authorizeAid() {
       
$aid = (string)filter_input(INPUT_GET, 'aid');

        if (
defined('iAUTH') && isset($aid) && iAUTH == $aid) {
            return
TRUE;
        }

        return
FALSE;
    }

    private function
setResult($result) {
       
$this->result = $result;
    }
}