<modification>
    <id>Search by Product ID and Manufacturer </id>
    <version>1.0</version>
    <vqmver>2.2.2</vqmver>
    <author>Jason Aguilar</author>
    <file name="catalog/model/catalog/improved_search.php">

        <operation>
            <search position="replace" offset="1" index="1"><![CDATA[
            if (isset($data['filter_name']) && !empty($data['filter_name']))
            ]]>
            </search>
            <add><![CDATA[

              $exelkeys = '500, 695, 595, 195, 205, 225, 215, 245, 185, 14, 15, 16, 17, 18, 124';
              $exelkeywords = explode(', ', $exelkeys);

            if (isset($data['filter_name']) && !empty($data['filter_name'])) {

                if(strpos($data['filter_name'],',') !== false && preg_match('/^\d+(?:,\d+)*$/', $data['filter_name'])) {

                  $product_ids = $data['filter_name']; //substr($data['filter_name'], strpos($data['filter_name'], "=") + 1);

                  $sql .= " AND p.product_id IN (" . $this->db->escape($product_ids) . ")";

                } else if (is_numeric($data['filter_name']) && preg_match('/^[0-9]{1,}$/', (int)$data['filter_name']) && !in_array((int)$data['filter_name'], $exelkeywords)) {

                      $exelcheck = $this->db->query("SELECT product_id FROM " . DB_PREFIX . "product WHERE product_id = " . (int)$data['filter_name'] . "");

                      if ($exelcheck->num_rows > 0) {
                        $sql .= "AND (p.product_id = '" . (int)$data['filter_name'] . "')";
                      }


                } else if(isset($data['filter_name'])) {

        ]]>
            </add>
        </operation>


        <operation>
            <search position="before"><![CDATA[
            // apply tag filter (product search only)
            ]]>
            </search>
            <add><![CDATA[
            // Jason's PRODUCT ID search FIX
            }
            ]]>
            </add>
        </operation>
        <operation>
            <search position="before"><![CDATA[
            // apply category filter (product search only)
            ]]>
            </search>
            <add><![CDATA[
        // Jason's PRODUCT ID search FIX
        if(preg_match('/^[1-9][0-9]*$/', $data['filter_name'])) {
          $sql .= " OR p.product_id = '" . (int)$data['filter_name'] . "'";
        }   
        ]]>
            </add>
        </operation>

        <operation>
            <search position="replace"><![CDATA[
            $sql = "SELECT p.product_id, pd.name, p.manufacturer_id
            ]]>
            </search>
            <add><![CDATA[
            $sql = "SELECT p.product_id, pd.name, m.manufacturer_id, m.name, p.manufacturer_id
        ]]>
            </add>
        </operation>

        <operation>
            <search position="before"><![CDATA[
            $sql .= " LEFT JOIN " . DB_PREFIX . "product_description pd ON (p.product_id = pd.product_id)";
            ]]>
            </search>
            <add><![CDATA[
            $sql .= " LEFT JOIN " . DB_PREFIX . "manufacturer m ON (p.manufacturer_id = m.manufacturer_id)"; //Jason's Manufacturer into Query
        ]]>
            </add>
        </operation>
        

        <operation>
            <search position="before"><![CDATA[
            $sql .= "OR";
            ]]>
            </search>
            <add><![CDATA[
            $sql .= "OR LCASE(m.name) LIKE LCASE('%" . $data['filter_name'] . "%')"; // Search within Manufacturer Names
        ]]>
            </add>
        </operation>

    </file>

</modification>
