Problem sa custom search plugin-om

Moderators: TheHacker, cicans

mihajlobk
Joomla! Apprentice
Joomla! Apprentice
Posts: 7
Joined: Thu Sep 04, 2014 5:05 pm

Problem sa custom search plugin-om

Postby mihajlobk » Sun Nov 08, 2015 12:01 pm

Zdravo svima,

probao sam da napravim custom search plugin za joomla 3.4.5 za komponentu Simplefilemanager, ali sam verovatno napravio gresku u kodu.

Da li moze neko da mi pomogne da resim ovaj problem i da napravim plugin za pretragu u okviru ove komponente?

Ovo je kod koji sam napravio

Code: Select all

<?php
//First start with information about the Plugin and yourself. For example:
/**
 * @package     Joomla.Plugin
 * @subpackage  Search.nameofplugin
 *
 * @copyright   Copyright
 * @license     License, for example GNU/GPL
 */
 
//To prevent accessing the document directly, enter this code:
// no direct access
defined( '_JEXEC' ) or die( 'Restricted access' );
 
require_once JPATH_SITE .  '/components/simplefilemanager/helpers/route.php';
 
/**
 * All functions need to get wrapped in a class
 *
 * The class name should start with 'PlgSearch' followed by the name of the plugin. Joomla calls the class based on the name of the plugin, so it is very important that they match
 */
class PlgSearchFilesearch extends JPlugin
{
   /**
    * Constructor
    *
    * @access      protected
    * @param       object  $subject The object to observe
    * @param       array   $config  An array that holds the plugin configuration
    * @since       1.6
    */
   public function __construct(& $subject, $config)
   {
      parent::__construct($subject, $config);
      $this->loadLanguage();
   }
 
   function onContentSearchAreas()
   {
      static $areas = array(
         'filesearch' => 'Filesearch'
      );
      return $areas;
   }
 
   function onContentSearch( $text, $phrase='', $ordering='', $areas=null )
   {
      $user   = JFactory::getUser();
      $groups   = implode(',', $user->getAuthorisedViewLevels());
 
      // If the array is not correct, return it:
      if (is_array( $areas )) {
         if (!array_intersect( $areas, array_keys( $this->onContentSearchAreas() ) )) {
            return array();
         }
      }
 
      // Now retrieve the plugin parameters like this:
      $nameofparameter = $this->params->get('nameofparameter', defaultsetting );
 
      // Use the PHP function trim to delete spaces in front of or at the back of the searching terms
      $text = trim( $text );
 
      // Return Array when nothing was filled in.
      if ($text == '') {
         return array();
      }
 
      // After this, you have to add the database part. This will be the most difficult part, because this changes per situation.
      // In the coding examples later on you will find some of the examples used by Joomla! 3.1 core Search Plugins.
      //It will look something like this.
      $wheres = array();
      switch ($phrase) {
 
         // Search exact
         case 'exact':
            $text      = $this->db->Quote( '%'.$this->db->escape( $text, true ).'%', false );
            $wheres2    = array();
            $wheres2[]    = 'LOWER(a.name) LIKE '.$text;
            $where       = '(' . implode( ') OR (', $wheres2 ) . ')';
            break;
 
         // Search all or any
         case 'all':
         case 'any':
 
         // Set default
         default:
            $words    = explode( ' ', $text );
            $wheres = array();
            foreach ($words as $word)
            {
               $word      = $this->db->Quote( '%'.$this->db->escape( $word, true ).'%', false );
               $wheres2    = array();
               $wheres2[]    = 'LOWER(a.name) LIKE '.$word;
               $wheres[]    = implode( ' OR ', $wheres2 );
            }
            $where = '(' . implode( ($phrase == 'all' ? ') AND (' : ') OR ('), $wheres ) . ')';
            break;
      }
 
      // Ordering of the results
      switch ( $ordering ) {
 
         //Alphabetic, ascending
         case 'alpha':
            $order = 'a.name ASC';
            break;
 
         // Oldest first
         case 'oldest':
 
         // Popular first
         case 'popular':
 
         // Newest first
         case 'newest':
 
         // Default setting: alphabetic, ascending
         default:
            $order = 'a.name ASC';
      }
 
      // Replace nameofplugin
      $section = JText::_( 'filesearch' );
 
      // The database query; differs per situation!
      $query   = $this->db->getQuery(true);
      $query->select('a.name AS title, "" AS created, a.link AS text, ' . $case_when."," . $case_when1);
            $query->select($query->concatenate(array($this->db->Quote($section), 'c.title'), " / ").' AS section');
            $query->select('"1" AS browsernav');
            $query->from('#__simplefilemanager AS a');
            $query->innerJoin('#__categories as c ON c.id = a.catid');
            $query->where('('. $where .')' . 'AND a.published IN ('.implode(',', $state).') AND c.published = 1 AND c.access IN ('. $groups .')');
            $query->order($order);
 
      // Set query
      $this->db->setQuery( $query, 0, $limit );
      $rows = $this->db->loadObjectList();
 
      // The 'output' of the displayed link.
      foreach($rows as $key => $row) {
         $rows[$key]->href = 'index.php?option=com_simplefilemanager&view=simplefilemanager&id='.$row->catslug.'&id='.$row->slug;
      }
 
   //Return the search results in an array
   return $rows;
   }
}


Unapred zahvalan!

Return to “Joomla! dodaci”

Who is online

Users browsing this forum: No registered users and 3 guests