public static function createUpdate($class, $filename = null) { $file = str_replace('_', '/', $class); $isSql = false; if (!$filename) { if (is_file($file . '.sql')) { $filename = $file . '.sql'; $isSql = true; } else { if (is_file(KWF_PATH . '/' . $file . '.sql')) { $filename = KWF_PATH . '/' . $file . '.sql'; $isSql = true; } } } else { $isSql = substr($filename, -4) == '.sql'; } $update = null; if ($isSql) { $update = new Kwf_Update_Sql($class); $update->sql = file_get_contents($filename); if (preg_match("#\\#\\s*tags:(.*)#", $update->sql, $m)) { $update->setTags(explode(' ', trim($m[1]))); } } else { $update = new $class($class); if (!$update instanceof Kwf_Update) { throw new Kwf_Exception("Invalid update class: '{$class}'"); } } return $update; }