* @category class * @package core * @subpackage version * @copyright 2005-2017 Titan Framework * @license http://www.titanframework.com/license/ BSD License (3 Clause) * @see VersionForm, VersionView, Search */ class VersionSearch extends Search { protected $vTable = ''; public function __construct () { global $section, $action; $args = func_get_args(); $fileName = FALSE; if ($action->getXmlPath () !== FALSE && trim ($action->getXmlPath ()) != '') array_unshift ($args, $action->getXmlPath ()); foreach ($args as $trash => $arg) { if (!file_exists ('section/'. $section->getName () .'/'. $arg)) continue; $fileName = $arg; break; } if ($fileName === FALSE) throw new Exception ('Arquivo XML não encontrado em [section/'. $section->getName () .'/].'); $file = 'section/'. $section->getName () .'/'. $fileName; $cacheFile = Instance::singleton ()->getCachePath () .'parsed/'. fileName ($file) .'_'. md5_file ($file) .'.php'; if (file_exists ($cacheFile)) $array = include $cacheFile; else { $xml = new Xml ($file); $array = $xml->getArray (); if (!isset ($array ['search'][0])) throw new Exception ('A tag <search></search> não foi encontrada no XML ['. $fileName .']!'); xmlCache ($cacheFile, $array); } $array = $array ['search'][0]; $this->file = $fileName; if (array_key_exists ('table', $array)) { $this->table = Version::singleton ()->vcTable ($array ['table']); $this->vTable = $array ['table']; } if (array_key_exists ('father', $array) && isset ($_GET['itemId']) && $_GET['itemId']) $this->father = array ($array ['father'], $_GET['itemId']); $search = Instance::singleton ()->getSearch (); if (array_key_exists ('hash', $search)) $this->hash = $search ['hash']; if (array_key_exists ('timeout', $search)) $this->timeout = $search ['timeout']; global $section, $action; $vControl = array ('_tvc_version' => FALSE); if (array_key_exists ('field', $array) && is_array ($array ['field'])) foreach ($array ['field'] as $trash => $field) if ($obj = Type::factory ($this->getTable (), $field)) { if (array_key_exists ($obj->getColumn (), $vControl)) $vControl [$obj->getColumn ()] = TRUE; $this->fields [$obj->getAssign ()] = $obj; } $vFields = array ('_tvc_version' => array ('type' => 'Integer', 'column' => '_tvc_version', 'id' => '_VERSION_', 'label' => 'Revisão')); foreach ($vControl as $key => $exists) if (!$exists) $this->fields [$vFields [$key]['id']] = Type::factory ($this->getTable (), $vFields [$key]); reset ($this->fields); } }