path) AND empty($this->xmldata)) { return false; } if (!empty($this->path)) { if (($fdata = @file_get_contents($this->path)) !== false) { $this->xmldata = $fdata; return true; } else { return false; } } else { return true; } } // ------------------------------------------------------------------- // -- Parses the XML data // ------------------------------------------------------------------- function parse() { global $bugsys; if (empty($this->xmldata)) { return false; } $this->phrases = array(); $this->languageinfo = array(); if (!$bugsys->is_loaded('xml')) { $bugsys->load('xml'); } $data = $bugsys->xml->parse($this->xmldata); foreach ($data AS $tag) { if ($tag['tagname'] == 'language') { $this->languageinfo = $tag['attributes']; if ($this->languageinfo['MASTER'] == 'MASTER') { $this->master = true; unset($this->languageinfo['MASTER']); } } else if ($tag['tagname'] == 'phrase') { $this->phrases[ $tag['attributes']['name'] ] = $tag['data']; } } } // ------------------------------------------------------------------- // -- Returns a query that creates a language // ------------------------------------------------------------------- function language() { global $bugsys; $query = " INSERT INTO " . TABLE_PREFIX . "language (title, languagecode, charset, direction, default, userselect) VALUES ('" . $bugsys->escape($this->languageinfo['title']) . "', '" . $bugsys->escape($this->languageinfo['languagecode']) . "', '" . $bugsys->escape($this->languageinfo['charset']) . "', '" . $bugsys->escape($this->languageinfo['direction']) . "', 0, 0 )"; return $query; } // ------------------------------------------------------------------- // -- Constructs the MySQL query to insert phrases // ------------------------------------------------------------------- function build() { global $bugsys; if ($this->master) { $query = " INSERT INTO " . TABLE_PREFIX . "phrase (varname, phrasetext, imported) VALUES"; foreach ($this->phrases AS $name => $text) { $querybuild[] = " ('" . $bugsys->escape($name) . "', '" . $bugsys->escape($text) . "', " . time() . ")"; } $query .= implode(',', $querybuild); } else { if (!$this->languageid) { return false; } $query = " INSERT INTO " . TABLE_PREFIX . "locale (languageid, varname, phrasetext) VALUES"; foreach ($this->phrases AS $name => $text) { $querybuild[] = " ({$this->languageid}, '" . $bugsys->escape($name) . "', '" . $bugsys->escape($text) . "')"; } $query .= implode(',', $querybuild); } return $query; } // ------------------------------------------------------------------- // -- Constructs XML data for export // ------------------------------------------------------------------- function export($languageid) { global $bugsys; // attributes for the root tag $attrs = array(); if ($languageid != -1) { $language = $bugsys->db->query_first("SELECT * FROM " . TABLE_PREFIX . "language WHERE languageid = " . intval($languageid)); if (!$language) { return false; } $attrs['title'] = $language['title']; $attrs['languagecode'] = $language['languagecode']; $attrs['charset'] = $language['charset']; $attrs['direction'] = $language['direction']; $phrasefetch = $bugsys->db->query("SELECT * FROM " . TABLE_PREFIX . "locale WHERE languageid = $language[languageid] ORDER BY varname ASC"); while ($phrase = $bugsys->db->fetch_array($phrasefetch)) { $phrases["$phrase[varname]"] = $phrase['phrasetext']; } $bugsys->db->free_result($phrasefetch); } else { $attrs['MASTER'] = 'MASTER'; $phrasefetch = $bugsys->db->query("SELECT * FROM " . TABLE_PREFIX . "phrase ORDER BY varname ASC"); while ($phrase = $bugsys->db->fetch_array($phrasefetch)) { $phrases["$phrase[varname]"] = $phrase['phrasetext']; } $bugsys->db->free_result($phrasefetch); } // construct the top notice $xmlout = (($languageid == -1) ? '' . "\n" . '' : '') . "\n\n"; // construct the root tag foreach ($attrs AS $name => $value) { $outattrs[] = $name . '="' . $bugsys->escape($value) . '"'; } $xmlout .= '\n"; // construct the phrases foreach ($phrases AS $varname => $text) { $xmlout .= "\tescape($varname) . "\">\n"; } // construct the end root tag $xmlout .= ''; // all finished return $xmlout; } } /*=====================================================================*\ || ################################################################### || # $HeadURL$ || # $Id$ || ################################################################### \*=====================================================================*/ ?>