<?php
/**
 * i-doit - Documentation and CMDB solution for IT environments
 *
 * This file is part of the i-doit framework. Modify at your own risk.
 *
 * Please visit http://www.i-doit.com/license for a full copyright and license information.
 *
 * @version     1.10
 * @package     i-doit
 * @author      synetics GmbH
 * @copyright   synetics GmbH
 * @url         http://www.i-doit.com
 * @license     http://www.i-doit.com/license
 */
namespace idoit\Module\Cmdb\Search\IndexExtension\IndexStrategy;

use idoit\Module\Search\Index\Protocol\IndexStrategy;

/**
 * i-doit
 *
 * Cmdb Index Manager Strategies
 *
 * @package     idoit\Module\Search\Index
 * @author      Dennis Stücken <dstuecken@i-doit.com>
 * @version     1.8
 * @copyright   synetics GmbH
 * @license     http://www.i-doit.com/license
 */
class Text implements IndexStrategy
{

    /**
     * Return index strategy (usually an sql statement)
     * @param                         $key
     * @param array                   $prop
     * @param \isys_cmdb_dao_category $dao
     * @param string                  $objectCondition
     *
     * @return string
     */
    public function get($key, array $prop, \isys_cmdb_dao_category $dao, $objectCondition = '')
    {
        $prop = [
            'key'       => $key,
            'table'     => $prop[C__PROPERTY__DATA][C__PROPERTY__DATA__TABLE_ALIAS] ? $prop[C__PROPERTY__DATA][C__PROPERTY__DATA__TABLE_ALIAS] : $dao->get_source_table(),
            'column'    => $prop[C__PROPERTY__DATA][C__PROPERTY__DATA__FIELD],
            'reference' => $prop[C__PROPERTY__DATA][C__PROPERTY__DATA__REFERENCES]
        ];

        $col = $prop['table'] ? $prop['table'] . '.' . $prop['column'] : $prop['column'];

        return 'REPLACE INTO isys_search_idx ' .
            '(isys_search_idx__version, isys_search_idx__type, isys_search_idx__key, isys_search_idx__value, isys_search_idx__reference) ' .
            'SELECT 1, \'cmdb\', CONCAT(isys_obj__isys_obj_type__id, \'.' . $dao->get_category() . '.\', ' . $dao->get_source_table() . '__id, \'.' . $prop['key'] . '\'), ' .
            $col . ', ' . $dao->get_source_table() . '__isys_obj__id FROM ' . $dao->get_source_table() . ' ' .
            'INNER JOIN isys_obj ON ' . $dao->get_source_table() . '__isys_obj__id = isys_obj__id ' .
            'WHERE ' . $col . ' != \'\'' . $objectCondition . ';';
    }
}