Exemplo n.º 1
0
 public function processConstraint(XenForo_Search_SourceHandler_Abstract $sourceHandler, $constraint, $constraintInfo, array $constraints)
 {
     $result = Tinhte_XenTag_Integration::processConstraint($sourceHandler, $constraint, $constraintInfo, $constraints);
     if ($result !== false) {
         return $result;
     }
     return parent::processConstraint($sourceHandler, $constraint, $constraintInfo, $constraints);
 }
Exemplo n.º 2
0
 /**
  * Process search constraints.
  *
  * @param array $constraints List of constraints: [constraint name] => limit (may be scalar or array)
  * @param XenForo_Search_DataHandler_Abstract|null $typeHandler
  *
  * @return array Processed constraints. Names as keys, value is array with possible keys:
  * 		* metadata - metadata value; keys: 0 = name of metadata, 1 = scalar/array allowed value(s) for metadata
  * 		* query - constraint to limit via query; keys: 0 = table alias, 1 = field, 2 = operator, 3 = scalar/array allowed value(s). Multiple for "=" operator only.
  * 	Note that the metadata and query keys are assumed to be equivalent. Engines need only use one (depending on engine details).
  */
 public function processConstraints(array $constraints, XenForo_Search_DataHandler_Abstract $typeHandler = null)
 {
     $processed = array();
     foreach ($constraints as $constraint => $constraintInfo) {
         if (is_array($constraintInfo) && count($constraintInfo) == 0 || is_string($constraintInfo) && $constraintInfo === '') {
             continue;
         }
         switch ($constraint) {
             case 'user':
                 $processed[$constraint] = array('metadata' => array('user', $constraintInfo), 'query' => array('search_index', 'user_id', '=', $constraintInfo));
                 break;
             case 'user_content':
                 if (!empty($constraints['user'])) {
                     $processed[$constraint] = array('metadata' => array('content', $constraintInfo), 'query' => array('search_index', 'content_type', '=', $constraintInfo));
                 }
                 break;
             case 'content':
                 $processed[$constraint] = array('metadata' => array('content', $constraintInfo), 'query' => array('search_index', 'content_type', '=', $constraintInfo));
                 break;
             case 'node':
                 $nodes = preg_split('/\\D/', strval($constraintInfo));
                 $processed[$constraint] = array('metadata' => array('node', array_map('intval', $nodes)));
                 break;
             case 'date':
                 $processed[$constraint] = array('query' => array('search_index', 'item_date', '>', intval($constraintInfo)));
                 break;
             case 'date_max':
                 $processed[$constraint] = array('query' => array('search_index', 'item_date', '<', intval($constraintInfo)));
                 break;
             default:
                 if ($typeHandler) {
                     $newConstraint = $typeHandler->processConstraint($this, $constraint, $constraintInfo, $constraints);
                     if ($newConstraint) {
                         $processed[$constraint] = $newConstraint;
                     }
                 }
         }
     }
     return $processed;
 }