function importLines($lines, $fields, $class_name, $parent) { $count = 0; foreach ($lines as $line) { $line = trim($line); if (empty($line)) continue; $array = explode(";", $line); $newobject = new mObject(); $newobject->setClassName($class_name); $newobject->loadVars(); $newobject->name = trim($array[$fields['name']]); $newobject->language = $_SESSION['murrix']['language']; $newobject->rights = $parent->getMeta("initial_rights", $parent->getRights()); $vars = $newobject->getVars(); foreach ($vars as $var) { if (!isset($fields[$var->name])) continue; $value = $array[$fields[$var->name]]; $newobject->setVarValue($var->name, $value); } if ($newobject->save()) { guessObjectType($newobject); clearNodeFileCache($parent->getNodeId()); $newobject->linkWithNode($parent->getNodeId()); $count++; } else { return mMsg::add("importLines", $object->getLastError(), true); } } return $count; }
function parseXML($args) { // Instantiate the serializer $Unserializer = &new XML_Unserializer(); // Serialize the data structure $status = $Unserializer->unserialize($args['data']); // Check whether serialization worked if (PEAR::isError($status)) die($status->getMessage()); // Display the PHP data structure $import_data = $Unserializer->getUnserializedData(); $parent = new mObject($args['node_id']); $logtext = ""; if (isset($import_data['version'])) $logtext .= "Version: ".$import_data['version']."<br/>"; if (isset($import_data['name'])) $logtext .= "Created: ".$import_data['created']."<br/>"; if (isset($import_data['name'])) $logtext .= "Name: ".$import_data['name']."<br/>"; if (isset($import_data['description'])) $logtext .= "Description: ".$import_data['description']."<br/>"; $imported_classes = array(); $imported_nodes = array(); $imported_links = array(); $imported_users = array(); $imported_groups = array(); if (isset($import_data['container']['xmldata'])) $import_data['container'] = array($import_data['container']); foreach ($import_data['container'] as $container) { switch ($container['xmldata']) { case "node": $imported_nodes[] = $container; break; case "class": $imported_classes[] = $container; break; case "link": $imported_links[] = $container; break; case "user": $imported_users[] = $container; break; case "group": $imported_groups[] = $container; break; } } if (count($imported_classes) > 0) $logtext .= "Found ".count($imported_classes)." classes<br/>"; if (count($imported_nodes) > 0) $logtext .= "Found ".count($imported_nodes)." nodes<br/>"; if (count($imported_links) > 0) $logtext .= "Found ".count($imported_links)." links<br/>"; if (count($imported_users) > 0) $logtext .= "Found ".count($imported_users)." users<br/>"; if (count($imported_groups) > 0) $logtext .= "Found ".count($imported_groups)." groups<br/>"; $class_table = new mTable("classes"); $vars_table = new mTable("vars"); $initial_meta_table = new mTable("initial_meta"); foreach ($imported_classes as $class) { $logtext .= "Checking database for existing class ".$class['name']."<br/>"; $existing_class = $class_table->get("`name`='".$class['name']."'"); if (count($existing_class) == 0) { $logtext .= "No existing class named ".$class['name']." found, creating<br/>"; $class_table->insert(array("name"=>$class['name'], "default_icon"=>$class['icon'])); if (count($class['variables']) > 0) { foreach ($class['variables'] as $varname => $properties) $vars_table->insert(array("class_name"=>$class['name'], "name"=>$varname, "priority"=>$properties['priority'], "required"=>$properties['required'], "type"=>$properties['type'], "extra"=>$properties['extra'], "comment"=>$properties['comment'])); } if (count($class['metadata']) > 0) { foreach ($class['metadata'] as $name => $value) $initial_meta_table->insert(array("class_name"=>$class['name'], "name"=>$name, "value"=>$value)); } continue; } else $logtext .= "Class named ".$class['name']." found, checking variables<br/>"; $class_object = new mObject(); $class_object->setClassName($class['name']); $class_object->loadVars(); foreach ($class['variables'] as $varname => $properties) { if ($class_object->checkVarExistance($varname) == 0) { $logtext .= "Could not resolve - $varname, skipping, this data will be ignored!<br/>"; continue; } } } $nodes_to_link = array(); $id_conversion = array(); $added_node_ids = array(); $linked_node_ids = array(); $node_table = new mTable("nodes"); foreach ($imported_nodes as $container) { if (!isset($container['created'])) $container['created'] = date("Y-m-d H:i:s"); if (isset($container['rights'])) $rights = $container['rights']; else $rights = $parent->getRights(); $node_id = $node_table->insert(array("created" => $container['created'], "rights" => $rights)); $node = new mObject(); $node->node_id = $node_id; $id_conversion[$container['id']] = $node_id; $added_node_ids[] = $node_id; if (is_array($container['metadata'])) { foreach ($container['metadata'] as $key => $value) { $node->setMeta($key, $value); $logtext .= "Created metadata name=".$key.", value=".$value.", node_id=".$node_id."<br/>"; } } foreach ($container['objects'] as $object_array) { $object = new mObject(); $object->setClassName($object_array['class_name']); $object->loadVars(); if (!isset($object_array['created'])) $object_array['created'] = date("Y-m-d H:i:s"); $object->node_id = $node_id; if (!empty($object_array['created'])) $object->created = $object_array['created']; else $object->created = date("Y-m-d H:i:s"); if (!empty($object_array['version'])) $object->version = $object_array['version']; else $object->version = 1; $object->class_name = $object_array['class_name']; $object->name = $object_array['name']; $object->icon = $object_array['icon']; $object->language = $object_array['language']; if (isset($object_array['user'])) { $user = new mUser(); $user->setByUsername($object_array['user']); $object->user_id = $user->id; } else $object->user_id = $_SESSION['murrix']['user']->id; if (is_array($object_array['variables'])) { foreach ($object_array['variables'] as $key => $value) { if ($object->checkVarExistance($key) == 0) { $logtext .= "Could not resolve - $key, skipping<br/>"; continue; } if (!is_array($value['value'])) $value['value'] = html_entity_decode($value['value']); if ($value['type'] == "file") { $extension = strtolower(pathinfo($value['value'], PATHINFO_EXTENSION)); $oldfile = $args['filepath']."/".$value['fileid'].".$extension"; if (!file_exists($oldfile)) $logtext .= "Could not find file - $oldfile, skipping<br/>"; else $object->setVarValue($key, $value['value'].":$oldfile"); } else if ($value['type'] == "thumbnail") { if (!empty($value['thumb_id'])) { $oldfile = $args['thumbpath']."/".$value['fileid'].".jpg"; if (!file_exists($oldfile)) $logtext .= "Could not find thumbfile - $oldfile, skipping<br/>"; else $object->setVarValue($key, $value['fileid'].".jpg:$oldfile"); } } else $object->setVarValue($key, $value['value']); } } $object->save(true); guessObjectType($object); $logtext .= "Created object name=".$object->name.", node_id=$node_id, id=".$object->id.",version=".$object->version.",language=".$object->language."<br/>"; } } $link_table = new mTable("links"); foreach ($imported_links as $container) { $link_array = array(); $link_array['node_top'] = $id_conversion[$container['node_top']]; $link_array['node_bottom'] = $id_conversion[$container['node_bottom']]; $link_array['type'] = $container['type']; $link_table->insert($link_array); $logtext .= "Linked node_top=".$link_array['node_top']." to node_bottom=".$link_array['node_bottom'].", type=".$link_array['type']."<br/>"; if ($link_array['type'] == "sub") $linked_node_ids[] = $id_conversion[$container['node_bottom']]; } $added_node_ids = array_unique($added_node_ids); $linked_node_ids = array_unique($linked_node_ids); $node_ids_to_link = array_diff($added_node_ids, $linked_node_ids); foreach ($node_ids_to_link as $node_id) { $link_array = array(); $link_array['node_top'] = $args['node_id']; $link_array['node_bottom'] = $node_id; $link_array['type'] = "sub"; $link_table->insert($link_array); $logtext .= "Linked node_top=".$link_array['node_top']." to node_bottom=".$link_array['node_bottom'].", type=".$link_array['type']."<br/>"; } return mMsg::add("mXml::parseXML", $logtext, false); }
require_once("classes/class.cscript.php"); require_once("classes/class.calendar.php"); require_once("classes/class.mtable.php"); require_once("classes/class.muser.php"); require_once("classes/class.mgroup.php"); require_once("classes/class.mxml.php"); require_once("classes/class.mmsg.php"); /* ========================= */ // Load 3d-party files /* ========================= */ require_once("3dparty/exifer/exif.php"); require_once("3dparty/FCKeditor/fckeditor.php"); $messages = new mMsg(); $messages->clearAll(); /* ========================= */ // Load scriptfiles /* ========================= */ $folders = GetSubfolders("$abspath/scripts"); foreach ($folders as $folder) { if ($folders != "install") require_once("$abspath/scripts/$folder/script.php"); }
function actionFinish(&$system, $args) { global $abspath, $db_prefix, $root_id, $anonymous_id; $db_prefix = $this->db['prefix']; if (empty($args['theme'])) { $system->addAlert("You must enter select a theme"); return; } if (empty($args['imgsize'])) { $system->addAlert("You must enter a imagesize"); return; } if (empty($args['thumbsize'])) { $system->addAlert("You must enter a thumbnailsize"); return; } if (empty($args['default_lang'])) { $system->addAlert("You must enter a default language"); return; } if (empty($args['default_path'])) { $system->addAlert("You must enter a default path"); return; } if (empty($args['password'])) { $system->addAlert("You must enter a password"); return; } unset($args['action']); $this->config = $args; $logtext = ""; if (!$db_conn = mysql_pconnect($this->db['adress'], $this->db['username'], $this->db['password'])) { $system->addAlert("Error connecting to MySQL: " . mysql_errno() . " " . mysql_error()); return; } if (!mysql_select_db($this->db['name'])) { if (mysql_query("CREATE DATABASE `".$this->db['name']."`")) $logtext .= "Database ".$this->db['name']." created.<br/>"; else { $system->addAlert("Failed to create database ".$this->db['name'].". Error: " . mysql_errno() . " " . mysql_error()); return; } } mysql_select_db($this->db['name']); $files = GetSubfiles("$abspath/scripts/install/db"); foreach ($files as $file) { $query = "DROP TABLE IF EXISTS `".$this->db['prefix'].basename($file, ".sql")."`"; mysql_query($query); $query = str_replace("%PREFIX%", $this->db['prefix'], implode("", file("$abspath/scripts/install/db/$file"))); if (mysql_query($query)) $logtext .= "Imported $file successfully.<br/>"; else { $system->addAlert("Failed to import $file. Error: " . mysql_errno() . " " . mysql_error()."\n$query"); return; } } $xml = new mXml(); $files = GetSubfiles("$abspath/scripts/install/classes"); foreach ($files as $file) { $filedata = getFileData($file, "$abspath/scripts/install/classes/$file"); $msgid = $xml->parseXML(array("node_id" => 0, "data" => $filedata)); $logtext .= mMsg::getText($msgid); if (mMsg::isError($msgid)) { $system->addAlert(mMsg::getError($msgid)); return; } else $logtext .= "Imported $file successfully.<br/>"; } $files = GetSubfiles("$abspath/scripts/install/objects"); foreach ($files as $file) { $filedata = getFileData($file, "$abspath/scripts/install/objects/$file"); $msgid = $xml->parseXML(array("node_id" => 0, "data" => $filedata)); $logtext .= mMsg::getText($msgid); if (mMsg::isError($msgid)) { $system->addAlert(mMsg::getError($msgid)); return; } else $logtext .= "Imported $file successfully.<br/>"; } $root_id = 1; $admin_group_id = createGroup("admins", "Administrators group", true); $anon_group_id = createGroup("anonymous", "Anonymous group", false); $anon_user_id = createUserSimple("Anonymous", "anonymous", "", "", "anonymous", false); $anonymous_id = $anon_user_id; $admin_user_id = createUserSimple("Administrator", "admin", $this->config['password'], "", "admins", true); $files = GetSubfiles("$abspath/cache"); foreach ($files as $file) unlink("$abspath/cache/$file"); $files = GetSubfiles("$abspath/files"); foreach ($files as $file) unlink("$abspath/files/$file"); $files = GetSubfiles("$abspath/thumbnails"); foreach ($files as $file) unlink("$abspath/thumbnails/$file"); // Insert initial objects /* $root_obj = new mObject(); $root_obj->setClassName("folder"); $root_obj->loadVars(); $root_obj->setLanguage("eng"); $root_obj->setName("root"); $root_obj->setIcon("murrix"); $root_obj->setRights("all=r"); $root_obj->setVarValue("description", "This is the root node"); if ($root_obj->save()) { $root_obj->setMeta("initial_rights", "admins=rwc"); $logtext .= "Created ".$root_obj->getName().".<br/>"; } else { $logtext .= "Failed to create ".$root_obj->getName().".<br/>"; $logtext .= $root_obj->error; $this->done = false; } $home_obj = new mObject(); $home_obj->setClassName("folder"); $home_obj->loadVars(); $home_obj->setLanguage("eng"); $home_obj->setName("home"); $home_obj->setIcon("home"); $home_obj->setRights("all=r"); $home_obj->setVarValue("description", "This folder contain home folders"); if ($home_obj->save()) { $home_obj->linkWithNode($root_obj->getNodeId()); $logtext .= "Created ".$home_obj->getName().".<br/>"; } else { $logtext .= "Failed to create ".$home_obj->getName().".<br/>"; $logtext .= $home_obj->error; $this->done = false; } $users_home_obj = new mObject(); $users_home_obj->setClassName("folder"); $users_home_obj->loadVars(); $users_home_obj->setLanguage("eng"); $users_home_obj->setName("users"); $users_home_obj->setIcon("user"); $users_home_obj->setRights("all=r"); $users_home_obj->setVarValue("description", "This folder contain home folders"); if ($users_home_obj->save()) { $users_home_obj->linkWithNode($home_obj->getNodeId()); $logtext .= "Created ".$users_home_obj->getName().".<br/>"; } else { $logtext .= "Failed to create ".$users_home_obj->getName().".<br/>"; $logtext .= $users_home_obj->error; $this->done = false; } $group_home_obj = new mObject(); $group_home_obj->setClassName("folder"); $group_home_obj->loadVars(); $group_home_obj->setLanguage("eng"); $group_home_obj->setName("groups"); $group_home_obj->setIcon("group2"); $group_home_obj->setRights("all=r"); $users_home_obj->setVarValue("description", "This folder contain group folders"); if ($group_home_obj->save()) { $group_home_obj->linkWithNode($home_obj->getNodeId()); $logtext .= "Created ".$group_home_obj->getName().".<br/>"; } else { $logtext .= "Failed to create ".$group_home_obj->getName().".<br/>"; $logtext .= $group_home_obj->error; $this->done = false; } $adminhome_obj = new mObject(); $adminhome_obj->setClassName("folder"); $adminhome_obj->loadVars(); $adminhome_obj->setLanguage("eng"); $adminhome_obj->setName($this->admin_username); $adminhome_obj->setRights("admins=rwc"); $adminhome_obj->setVarValue("description", "This is the home for ".$this->admin_username); if ($adminhome_obj->save()) { $adminhome_obj->linkWithNode($users_home_obj->getNodeId()); $logtext .= "Created ".$adminhome_obj->getName().".<br/>"; $administrator->home_id = $adminhome_obj->getNodeId(); $administrator->save(); } else { $logtext .= "Failed to create ".$adminhome_obj->getName().".<br/>"; $logtext .= $adminhome_obj->error; $this->done = false; } $adminshome_obj = new mObject(); $adminshome_obj->setClassName("folder"); $adminshome_obj->loadVars(); $adminshome_obj->setLanguage("eng"); $adminshome_obj->setName("admins"); $adminshome_obj->setRights("admins=rwc"); $adminshome_obj->setVarValue("description", "This is the home for admins"); if ($adminshome_obj->save()) { $adminshome_obj->linkWithNode($group_home_obj->getNodeId()); $logtext .= "Created ".$adminshome_obj->getName().".<br/>"; $administrator_group->home_id = $adminshome_obj->getNodeId(); $administrator_group->save(); } else { $logtext .= "Failed to create ".$adminshome_obj->getName().".<br/>"; $logtext .= $adminshome_obj->error; $this->done = false; } $public_obj = new mObject(); $public_obj->setClassName("folder"); $public_obj->loadVars(); $public_obj->setLanguage("eng"); $public_obj->setName("public"); $public_obj->setRights("all=r"); $public_obj->setVarValue("description", "This folder is readable by anyone"); if ($public_obj->save()) { $public_obj->linkWithNode($root_obj->getNodeId()); $logtext .= "Created ".$public_obj->getName().".<br/>"; } else { $logtext .= "Failed to create ".$public_obj->getName().".<br/>"; $logtext .= $public_obj->error; $this->done = false; } */ setSetting("ROOT_NODE_ID", 1, "any"); setSetting("ANONYMOUS_ID", $anonymous->id, "any"); setSetting("TRANSPORT", $this->config['transport'], "any"); setSetting("DEFAULT_THEME", $this->config['theme'], "any"); setSetting("IMGSIZE", $this->config['imgsize'], $this->config['theme']); setSetting("THUMBSIZE", $this->config['thumbsize'], $this->config['theme']); setSetting("INSTANTTHUMBS", $this->config['instantthumbs'], $this->config['theme']); setSetting("DEFAULT_PATH", $this->config['default_path'], $this->config['theme']); setSetting("DEFAULT_LANG", $this->config['default_lang'], $this->config['theme']); $confdata = "<?\n"; $confdata .= "\$mysql_address = \"".$this->db['adress']."\";\n"; $confdata .= "\$mysql_user = \"".$this->db['username']."\";\n"; $confdata .= "\$mysql_pass = \"".$this->db['password']."\";\n"; $confdata .= "\$mysql_db = \"".$this->db['name']."\";\n"; $confdata .= "\$db_prefix = \"".$this->db['prefix']."\";\n"; $confdata .= "?>"; if (is_writable($abspath)) { $conffile = fopen("$abspath/config.inc.php", "w"); fwrite($conffile, $confdata); fclose($conffile); chmod("$abspath/config.inc.php", 0600); $logtext .= "Wrote config, $abspath/config.inc.php.<br/>"; } else { $logtext .= "Unable to write config file.<br/>"; $logtext .= "Please put the folowing into \"config.inc.php\" and place it in MURRiXs rootpath:<br/>"; $logtext .= "<br/>"; $logtext .= nl2br(htmlentities($confdata)); $logtext .= "<br/>"; } $logtext .= "Installation complete!<br/>"; $data = compiletpl("finish", array("logtext"=>$logtext)); $system->setZoneData($this->zone, utf8e($data)); $data = compiletpl("menu", array("action"=>"finish")); $system->setZoneData("zone_menu", utf8e($data)); }
function actionImport_xml(&$system, $args) { $object = new mObject($this->getNodeId($args)); if ($object->getNodeId() == 0 || !$object->hasRight("write")) { $system->addAlert(ucf(i18n("you do not have enough rights"))); return; } if (empty($args['file'])) { $system->addAlert(ucf(i18n("you must upload a file to import"))); return; } list($filename, $full_filename) = explode(":", $args['file']); $filedata = getFileData($filename, $full_filename); $logtext = "<strong>Beginning import from xml file</strong> - ".date("Y-m-d H:i:s")."<hr/>"; $xml = new mXml(); $msgid = $xml->parseXML(array("node_id" => $object->getNodeId(), "data" => $filedata)); $logtext .= mMsg::getText($msgid); $logtext .= "<hr/><strong>Finished import</strong> - ".date("Y-m-d H:i:s")."<br/><br/>"; $system->paddZoneData("zone_import_log", utf8e($logtext)); }