query("SELECT * FROM folders WHERE userID=".$user->getId()); $res = array(); while ( $row = mysql_fetch_array($ret) ) { $res[] = $row; } return $res; } function getCurrentFolderID() { if ( isset($_SESSION['folderid']) && is_numeric($_SESSION['folderid']) ) { return $_SESSION['folderid']; } return 0; } function xml2array($contents, $get_attributes = 1, $priority = 'tag') { if (!function_exists('xml_parser_create')) { return array ('no parser'); } $contents = str_replace("\\n", "", $contents); $parser = xml_parser_create(''); xml_parser_set_option($parser, XML_OPTION_TARGET_ENCODING, "UTF-8"); xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING, 0); xml_parser_set_option($parser, XML_OPTION_SKIP_WHITE, 1); xml_parse_into_struct($parser, trim($contents), $xml_values); xml_parser_free($parser); if (!$xml_values) return; //Hmm... $xml_array = array (); $parents = array (); $opened_tags = array (); $arr = array (); $current = & $xml_array; $repeated_tag_index = array (); foreach ($xml_values as $data) { unset ($attributes, $value); extract($data); $result = array (); $attributes_data = array (); if (isset ($value)) { if ($priority == 'tag') $result = $value; else $result['value'] = $value; } if (isset ($attributes) and $get_attributes) { foreach ($attributes as $attr => $val) { if ($priority == 'tag') $attributes_data[$attr] = $val; else $result['attr'][$attr] = $val; //Set all the attributes in a array called 'attr' } } if ($type == "open") { $parent[$level -1] = & $current; if (!is_array($current) or (!in_array($tag, array_keys($current)))) { $current[$tag] = $result; if ($attributes_data) $current[$tag . '_attr'] = $attributes_data; $repeated_tag_index[$tag . '_' . $level] = 1; $current = & $current[$tag]; } else { if (isset ($current[$tag][0])) { $current[$tag][$repeated_tag_index[$tag . '_' . $level]] = $result; $repeated_tag_index[$tag . '_' . $level]++; } else { $current[$tag] = array ( $current[$tag], $result ); $repeated_tag_index[$tag . '_' . $level] = 2; if (isset ($current[$tag . '_attr'])) { $current[$tag]['0_attr'] = $current[$tag . '_attr']; unset ($current[$tag . '_attr']); } } $last_item_index = $repeated_tag_index[$tag . '_' . $level] - 1; $current = & $current[$tag][$last_item_index]; } } elseif ($type == "complete") { if (!isset ($current[$tag])) { $current[$tag] = $result; $repeated_tag_index[$tag . '_' . $level] = 1; if ($priority == 'tag' and $attributes_data) $current[$tag . '_attr'] = $attributes_data; } else { if (isset ($current[$tag][0]) and is_array($current[$tag])) { $current[$tag][$repeated_tag_index[$tag . '_' . $level]] = $result; if ($priority == 'tag' and $get_attributes and $attributes_data) { $current[$tag][$repeated_tag_index[$tag . '_' . $level] . '_attr'] = $attributes_data; } $repeated_tag_index[$tag . '_' . $level]++; } else { $current[$tag] = array ( $current[$tag], $result ); $repeated_tag_index[$tag . '_' . $level] = 1; if ($priority == 'tag' and $get_attributes) { if (isset ($current[$tag . '_attr'])) { $current[$tag]['0_attr'] = $current[$tag . '_attr']; unset ($current[$tag . '_attr']); } if ($attributes_data) { $current[$tag][$repeated_tag_index[$tag . '_' . $level] . '_attr'] = $attributes_data; } } $repeated_tag_index[$tag . '_' . $level]++; //0 and 1 index is already taken } } } elseif ($type == 'close') { $current = & $parent[$level -1]; } } return ($xml_array); } /** * @Secured(roles={'authenticated'}) * */ function actionWaramuImport() { $r_o = false; $zipfile = false; $notice = ""; if ( isset($_POST['folderid']) && is_numeric($_POST['folderid']) ) { $_SESSION['folderid'] = $_POST['folderid']; } $_SESSION['krihvel_notice'] = gettext("Importing from Waramu failed"); if ( isset($_POST['waramu_resource'])) { $wid = $_POST['waramu_resource']; global $user; $au = ''.$user->getUsername().''; require_once("includes/Waramu.php"); $ws = new Waramu(); $ws->connect(); $alist = $ws->listAttachments($au, $wid); $wzf_id = $alist["attachments"][0]["attachment"][0]["id"][0][0]; $wzf_filename = $alist["attachments"][0]["attachment"][0]["filename"][0][0]; $zipfile = $ws->getAttachment($au, $wid, $wzf_id); $ws->disconnect(); } else { $notice .= gettext("Resource not in Waramu"); } //return array('rid' => $this->getResourceID()); if ( $zipfile ) { $file = tempnam("tmp", "zip"); $fp = fopen($file, 'w'); fwrite($fp, $zipfile); fclose($fp); $zip = zip_open($file); if ($zip) { while ($zip_entry = zip_read($zip)) { $ze_name = zip_entry_name($zip_entry); if ( !substr_compare($ze_name, ".xml", -4, 4) && zip_entry_open($zip, $zip_entry, "r")) { $buf = zip_entry_read($zip_entry, zip_entry_filesize($zip_entry)); $xml_p = $this->xml2array($buf); // siin on käes need asjad massiivis :) if ( array_key_exists('resource', $xml_p) ) { $resource_type = $xml_p['resource']['type']; if (in_array($resource_type, array('link'))) { $resource_type = "krihvel"; } $classname = $xml_p['resource']['classname']; require_once("plugins/".$resource_type."/".$classname.".php"); $res_obj = new $classname('new'); $r_o = $res_obj->makeResourceFromXML($xml_p['resource']); } else if ( array_key_exists('image', $xml_p) ) { $imgUID = $xml_p['image']['imageUID']; $res = $this->kdb->query("SELECT * FROM images WHERE imageUID='".$imgUID."'"); if (mysql_num_rows($res)<=0) { require_once("plugins/krihvel/Image.php"); $img_obj = new Image('new'); $azip = new ZipArchive; $imgfile = false; if ($azip->open($_FILES['zfile']['tmp_name']) === TRUE) { $imgfile = $azip->getFromName(substr($ze_name, 0, -4)); $img_obj->makeImageFromXML($xml_p['image'], $imgfile, substr($ze_name, 0, -4)); $azip->close(); } } } zip_entry_close($zip_entry); } else { } } zip_close($zip); } else { $notice .= gettext("Importing failed! Zip file was corrupted!"); return array('pid' => 'WaramuImporter'); } return $r_o; } else { //$notice .= gettext("Please select file to upload!"); } $_SESSION['krihvel_notice'] = $notice; return array('pid' => 'WaramuImporter'); } /** * @Secured(roles={'authenticated'}) * */ function actionCancel() { return array('pid' => 'TaskCreator'); } } ?>