Exemple #1
0
	function exec($args, $stdin, &$stdout, &$stderr, &$system)
	{
		if (!empty($args))
		{
			$path = $args;
			
			if ($path{0} != "/")
				$path = $_SESSION['murrix']['path']."/$path";
				
			$node_id = getNode($path);
			
			if ($node_id > 0)
			{
				$stderr = ucf(i18n("object already exists"));
				return true;
			}
			
			$parent = new mObject(getNode($_SESSION['murrix']['path']));
			
			if (!(isAdmin() || $parent->hasRight("create")))
			{
				$stderr = ucf(i18n("not enough rights to create folder"));
				return true;
			}
			
			$object = new mObject();
			$object->setClassName("folder");
			$object->loadVars();

			$object->name = basename($path);
			$object->language = $_SESSION['murrix']['language'];
			$object->rights = $parent->getMeta("initial_rights", "rwcrwc---");
			$object->group_id = $parent->getMeta("initial_group", $parent->getGroupId());

			if (!$object->save())
			{
				$stderr = "Operation unsuccessfull.\n";
				$stderr .= "Error output:\n";
				$stderr .= $object->getLastError();
				return true;
			}
			
			clearNodeFileCache($parent->getNodeId());
			$object->linkWithNode($parent->getNodeId());
			$stdout = ucf(i18n("created folder successfully"));
		}
		else
		{
			$stdout = "Usage: oadd [name]\n";
			$stdout .= "Example: oadd newfolder";
		}
			
		return true;
	}
	function execute(&$system, $args)
	{
		if ($args['action'] == "meta")
		{
			$node_id = $this->getNodeId($args);
		
			if ($node_id > 0)
			{
				$object = new mObject($node_id);
		
				if ($object->hasRight("write"))
				{
					$object->setMeta("children_show_num_per_page", $args['children_show_num_per_page']);
					
					$object->setMeta("show_comments", $args['show_comments'] == "on" ? 1 : "");
					
					$object->setMeta("comment_show_num_per_page", $args['comment_show_num_per_page']);
					
					$object->setMeta("show_versionstab", $args['show_versionstab'] == "on" ? 1 : "");
					
					$object->setMeta("show_linkstab", $args['show_linkstab'] == "on" ? 1 : "");
					
					$object->setMeta("view", $args['view']);
					
					$object->setMeta("default_class_name", $args['default_class_name']);
					
					if ($args['sort_by'] == "custom")
						$object->setMeta("sort_by", $args['sort_by_custom']);
					else
						$object->setMeta("sort_by", $args['sort_by']);
					
					$object->setMeta("sort_direction", $args['sort_direction']);
					
					$object->setMeta("initial_rights", $args['initial_rights']);
					
					$_SESSION['murrix']['querycache'] = array();
					clearNodeFileCache($object->getNodeId());
					
					$versions = fetch("FETCH object WHERE property:node_id='".$object->getNodeId()."' NODESORTBY property:version,property:name");
					foreach ($versions as $version)
						delObjectFromCache($version->getId());
						
					$args['message'] = ucf(i18n("saved settings successfully"));
				}
			}
		}
		
		$this->draw($system, $args);
	}
	function exec($args, $stdin, &$stdout, &$stderr, &$system)
	{
		$object = new mObject(getNode($_SESSION['murrix']['path']));

		$user = $object->getUser();
			
		$stdout .= "<table cellspacing=\"0\">";
		$stdout .= "<tr><td class=\"titlename\">Name</td><td>".cmd($object->getName(), "exec=show'&node_id=".$object->getNodeId())."</td></tr>";
		$stdout .= "<tr><td class=\"titlename\">Icon</td><td>".img(geticon($object->getIcon(), 16))."</td></tr>";
		$stdout .= "<tr><td class=\"titlename\">Id</td><td>".$object->getNodeId()."</td></tr>";
		$stdout .= "<tr><td class=\"titlename\">Revision</td><td>".$object->getVersion()."</td></tr>";
		$stdout .= "<tr><td class=\"titlename\">Language</td><td>".$object->getLanguage()."</td></tr>";
		$stdout .= "<tr><td class=\"titlename\">Class</td><td>".$object->getClassName()."</td></tr>";
		$stdout .= "<tr><td class=\"titlename\">Rights</td><td>".$object->getRights()."</td></tr>";
		$stdout .= "<tr><td class=\"titlename\">User</td><td>".$user->username."</td></tr>";
		$stdout .= "<tr><td class=\"titlename\">Time</td><td>".$object->getCreated()."</td></tr>";
		$stdout .= "</table>";
		
		return true;
	}
	function exec($args, $stdin, &$stdout, &$stderr, &$system)
	{
		$object = new mObject(getNode($_SESSION['murrix']['path']));
		$links = $object->getLinks();
		
		if ($args == "-l")
		{
			$stdout .= "total ".count($links)."\n";
			if (count($links) > 0)
			{
				$stdout .= "<table cellspacing=\"0\">";
				$stdout .= "<tr class=\"table_title\">";
				$stdout .= "<td>Id</td>";
				$stdout .= "<td>Type</td>";
				$stdout .= "<td>Remote node</td>";
				$stdout .= "<td>Remote node is on...</td>";
				$stdout .= "</tr>";
				foreach ($links as $link)
				{
					if ($link['remote_id'] <= 0)
						$remote = ucf(i18n("unknown"));
					else
					{
						$remote_obj = new mObject($link['remote_id']);
						$remote = cmd(img(geticon($remote_obj->getIcon()))."&nbsp;".$remote_obj->getName(), "exec=show&node_id=".$remote_obj->getNodeId());
					}
	
					$stdout .= "<tr>";
					$stdout .= "<td>".$link['id']."</td>";
					$stdout .= "<td>".$link['type']."</td>";
					$stdout .= "<td>".$remote."</td>";
					$stdout .= "<td>".ucf(i18n($link['direction']))."</td>";
					$stdout .= "</tr>";
				}
				$stdout .= "</table>";
			}
		}
		else
		{
			foreach ($links as $link)
			{
				if ($link['remote_id'] > 0)
				{
					$remote_obj = new mObject($link['remote_id']);
					$stdout .= cmd($remote_obj->getName(), "exec=show&node_id=".$remote_obj->getNodeId())." ";
				}
			}
		}
		
		return true;
	}
	function execute(&$system, $args)
	{
		if (isset($args['action']) && $args['action'] == "deleteversion")
		{
			$object = new mObject();
			$object->loadByObjectId($args['object_id']);

			if ($object->hasRight("write"))
				$object->deleteCurrentVersion();

			$args['node_id'] = $object->getNodeId();
			clearNodeFileCache($object->getNodeId());
			
			$links = $object->getLinks();
			foreach ($links as $link)
			{
				if ($link['type'] == "sub")
					clearNodeFileCache($link['remote_id']);
			}
		}
		
		$system->triggerEventIntern("newlocation", $args);
	}
	function exec($args, $stdin, &$stdout, &$stderr, &$system)
	{
		$group = new mGroup();
		$groups = $group->getList();
		
		if ($args == "-l")
		{
			$stdout .= "total ".count($groups)."\n";
			if (count($groups) > 0)
			{
				$stdout .= "<table cellspacing=\"0\">";
				$stdout .= "<tr class=\"table_title\">";
				$stdout .= "<td>Id</td>";
				$stdout .= "<td>Name</td>";
				$stdout .= "<td>Home</td>";
				$stdout .= "<td>Created</td>";
				$stdout .= "<td>Description</td>";
				$stdout .= "</tr>";
				foreach ($groups as $group)
				{
					$stdout .= "<tr>";
					$stdout .= "<td>".$group->id."</td>";
					$stdout .= "<td>".$group->name."</td>";
					
					if ($group->home_id > 0)
					{
						$home = new mObject($group->home_id);
						$stdout .= "<td>".cmd($home->getPath(), "exec=show&node_id=".$home->getNodeId())."</td>";
					}
					else
						$stdout .= "<td></td>";
					
					$stdout .= "<td>".$group->created."</td>";
					$stdout .= "<td>".$group->description."</td>";
					$stdout .= "</tr>";
				}
				$stdout .= "</table>";
			}
		}
		else
		{
			foreach ($groups as $group)
				$stdout .= $group->name." ";
		}
		
		return true;
	}
	function exec($args, $stdin, &$stdout, &$stderr, &$system)
	{
		$object = new mObject(getNode($_SESSION['murrix']['path']));
		$children = fetch("FETCH node WHERE link:node_top='".$object->getNodeId()."' AND link:type='sub' NODESORTBY property:version SORTBY ".$object->getMeta("sort_by", "property:name"));
		
		if ($args == "-l")
		{
			$stdout .= "total ".count($children)."\n";
			if (count($children) > 0)
			{
				$stdout .= "<table cellspacing=\"0\">";
				$stdout .= "<tr class=\"table_title\">";
				$stdout .= "<td>Id</td>";
				$stdout .= "<td>Rev.</td>";
				$stdout .= "<td>Lang.</td>";
				$stdout .= "<td>Class</td>";
				$stdout .= "<td>Rights</td>";
				$stdout .= "<td>User</td>";
				$stdout .= "<td>Time</td>";
				$stdout .= "<td>Name</td>";
				$stdout .= "</tr>";
				foreach ($children as $child)
				{
					$user = $child->getUser();
					
					$stdout .= "<tr>";
					$stdout .= "<td>".$child->getNodeId()."</td>";
					$stdout .= "<td>".$child->getVersion()."</td>";
					$stdout .= "<td>".$child->getLanguage()."</td>";
					$stdout .= "<td>".$child->getClassName()."</td>";
					$stdout .= "<td>".$child->getRights()."</td>";
					$stdout .= "<td>".$user->username."</td>";
					$stdout .= "<td>".$child->getCreated()."</td>";
					$stdout .= "<td>".cmd(img(geticon($child->getIcon(), 16))."&nbsp;".$child->getName(), "exec=show&node_id=".$child->getNodeId())."</td>";
					$stdout .= "</tr>";
				}
				$stdout .= "</table>";
			}
		}
		else
		{
			foreach ($children as $child)
				$stdout .= $child->getName()." ";
		}
		
		return true;
	}
	function draw(&$system, $args)
	{
		$object = new mObject($this->getNodeId($args));

		$data = "";
		if ($object->getNodeId() > 0)
		{
			if ($object->hasRight("write"))
				$data = compiletpl("scripts/delete", array(), $object);
			else
				$data = compiletpl("message", array("title"=>ucf(i18n("error")), "message"=>ucf(i18n("not enough rights"))));
		}
		else
			$data = compiletpl("message", array("title"=>ucf(i18n("error")), "message"=>ucf(i18n("the specified path is invalid"))));

		$system->setZoneData($this->zone, utf8e($data));
	}
Exemple #9
0
	function exec($args, $stdin, &$stdout, &$stderr, &$system)
	{
		if (!empty($args))
		{
			$object = new mObject(getNode($_SESSION['murrix']['path']));
			
			if (!$object->hasRight("write"))
			{
				$stderr = ucf(i18n("not enough rights"));
				return true;
			}
			
			$links = $object->getLinks();
			$link_matched = false;
			foreach ($links as $link)
			{
				if ($link['id'] == $args)
				{
					$link_matched = $link;
					break;
				}
			}
			
			if ($matched === false)
			{
				$stderr = ucf(i18n("unknown link specified"));
				return true;
			}
			
			$object->deleteLink($args);
			clearNodeFileCache($object->getNodeId());
			clearNodeFileCache($link_matched['remote_id']);

			$_SESSION['murrix']['path'] = $object->getPathInTree();
			$system->TriggerEventIntern($response, "newlocation", array());
			$stdout = ucf(i18n("removed link successfully"));
		}
		else
		{
			$stdout = "Usage: ldel [linkid]\n";
			$stdout .= "Example: ldel 1";
		}
		
		return true;
	}
Exemple #10
0
	function exec($args, $stdin, &$stdout, &$stderr, &$system)
	{
		$object = new mObject(getNode($_SESSION['murrix']['path']));
		$versions = fetch("FETCH object WHERE property:node_id='".$object->getNodeId()."' NODESORTBY property:language,property:version,property:name");
		
		$stdout .= "total ".count($versions)."\n";
		if (count($versions) > 0)
		{
			$stdout .= "<table cellspacing=\"0\">";
			$stdout .= "<tr class=\"table_title\">";
			$stdout .= "<td>Id</td>";
			$stdout .= "<td>Rev.</td>";
			$stdout .= "<td>Lang.</td>";
			$stdout .= "<td>Class</td>";
			$stdout .= "<td>Rights</td>";
			$stdout .= "<td>User</td>";
			$stdout .= "<td>Group</td>";
			$stdout .= "<td>Time</td>";
			$stdout .= "<td>Name</td>";
			$stdout .= "</tr>";
			foreach ($versions as $version)
			{
				$user = $version->getUser();
				$group = $version->getGroup();
				
				$stdout .= "<tr>";
				$stdout .= "<td>".$version->getId()."</td>";
				$stdout .= "<td>".$version->getVersion()."</td>";
				$stdout .= "<td>".$version->getLanguage()."</td>";
				$stdout .= "<td>".$version->getClassName()."</td>";
				$stdout .= "<td>".$version->getRights()."</td>";
				$stdout .= "<td>".$user->username."</td>";
				$stdout .= "<td>".$group->name."</td>";
				$stdout .= "<td>".$version->getCreated()."</td>";
				$stdout .= "<td>".img(geticon($version->getIcon(), 16))."&nbsp;".$version->getName()."</td>";
				$stdout .= "</tr>";
			}
			$stdout .= "</table>";
		}
		return true;
	}
Exemple #11
0
	function exec($args, $stdin, &$stdout, &$stderr, &$system)
	{
		if (!empty($args))
		{
			$path = $args;
			
			if ($path{0} != "/")
				$path = $_SESSION['murrix']['path']."/$path";
				
			$node_id = getNode($path);
			
			if ($node_id <= 0)
			{
				$stderr = ucf(i18n("no such path"));
				return true;
			}
			else
				$object = new mObject($node_id);
			
			if (!(isAdmin() || $object->hasRight("write")))
			{
				$stderr = ucf(i18n("not enough rights to delete"));
				return true;
			}
			
			clearNodeFileCache($object->getNodeId());
			$object->deleteNode();
			$stdout = ucf(i18n("deleted node successfully"));
		}
		else
		{
			$stdout = "Usage: odel [name]\n";
			$stdout .= "Example: odel oldfolder";
		}
		
		return true;
	}
	function execute(&$system, $args)
	{
		if (!is_array($args))
			$args = array();
	
		// This should be checked and possibly moved to the settingsscript
		if (isset($args['meta']) || isset($args['rebuild_thumb']))
		{
			$node_id = $this->getNodeId($args);
		
			if ($node_id > 0)
			{
				$object = new mObject($node_id);
		
				if ($object->hasRight("write"))
				{
					if (isset($args['meta']))
						$object->setMeta($args['meta'], $args['value']);
		
					// Special case for files
					if (isset($args['rebuild_thumb']))
						delThumbnails($args['rebuild_thumb']);
						
					clearNodeFileCache($object->getNodeId());
				}
			}
		}
		$node_id = $this->getNodeId($args);
		
		if ($node_id > 0)
		{
			$object = new mObject($node_id);
			$_SESSION['murrix']['path'] = $object->getPathInTree();
		}

		$system->triggerEventIntern("newlocation", $args);
	}
Exemple #13
0
	function exec($args, $stdin, &$stdout, &$stderr, &$system)
	{
		if (!empty($args))
		{
			$args_split = splitArgs($args);
			
			if (count($args_split) >= 2)
			{
				$source = $args_split[0];
				$target = $args_split[1];
			
				if ($source{0} != "/")
					$source = $_SESSION['murrix']['path']."/$source";
					
				$source_node_id = getNode($source);
				
				if ($source_node_id <= 0)
				{
					$stderr = ucf(i18n("no such path")).": $source";
					return true;
				}
				else
					$source = new mObject($source_node_id);
				
				if (!(isAdmin() || $source->hasRight("write")))
				{
					$stderr = ucf(i18n("not enough rights on source"));
					return true;
				}
				
				if ($target{0} != "/")
					$target = $_SESSION['murrix']['path']."/$target";
					
				$target_node_id = getNode($target);
				
				if ($target_node_id <= 0)
				{
					$stderr = ucf(i18n("no such path")).": $target";
					return true;
				}
				else
					$target = new mObject($target_node_id);
				
				if (!(isAdmin() || $target->hasRight("write")))
				{
					$stderr = ucf(i18n("not enough rights on target"));
					return true;
				}
				
				$parent_node_id = getNode($_SESSION['murrix']['path']);
				
				$source->linkWithNode($target->getNodeId(), "sub");
				$source->unlinkWithNode($parent_node_id, "sub", "bottom");
				clearNodeFileCache($source->getNodeId());
				clearNodeFileCache($target->getNodeId());
				clearNodeFileCache(getNode($_SESSION['murrix']['path']));
				
				$stdout = ucf(i18n("moved node successfully"));
			}
		}
		else
		{
			$stdout = "Usage: omove [sourcepath] [targetpath]\n";
			$stdout .= "Example: omove \"/root/home\" \"/root/public\"";
		}
		
		return true;
	}
					$name = trim($paths['basename']);
					// replace '\\' with '/'
					$name = str_replace("\\", "", $name);
					$name = str_replace("/", "", $name);
					$name = str_replace("+", "", $name);
	
					$object->name = $name;
					$object->language = $_SESSION['murrix']['language'];
					$object->rights = $parent_new->getMeta("initial_rights", $parent_new->getRights());
		
					$object->setVarValue("file", trim($paths['basename']).":".$tempName);
		
					if ($object->save())
					{
						guessObjectType($object);
						$object->linkWithNode($parent_new->getNodeId());
						clearNodeFileCache($parent_new->getNodeId());
						printToLog("Created file". $object->getPath()."<br/>");
						$count++;
						$size += $file['size'];
					}
					else
					{
						printToLog("Failed to create file ". $object->getPath()."<br/>");
					}
				}
				
				printToLog("<br/>Successfully processed files<br/>");
				printToLog("$count of ".count($_FILES)." files<br/>");
				printToLog(DownloadSize($size)." total<br/>");
				
Exemple #15
0
function fetch($query, $debug = false)
{
	if (isset($_SESSION['murrix']['querycache'][$query]) && !$debug)
		return $_SESSION['murrix']['querycache'][$query];

	$query2 = $query;
	$commands = array("FETCH", "WHERE", "NODESORTBY", "SORTBY");
	$cmdstr = implode("|", $commands);

	$links = false;
	$vars = 0;
	$return = "object";
	$sort = array();
	$vars_array = array();

	$nodesortby = "";
	
	foreach ($commands as $ord)
	{
		if (preg_match("/^[ ]*($ord) (.+?)( ($cmdstr|$)|$)/", $query, $matches))
		{
			switch ($matches[1])
			{
				case "FETCH":
					switch (trim($matches[2]))
					{
					case "count":
						$select = "SELECT count(objects.id) AS count ";
						$return = "count";
						break;
	
					case "node":
						$select = "SELECT objects.id AS id, objects.node_id AS node_id, objects.language AS language, objects.version AS version ";
						$return = "node";
						break;
	
					case "object":
					default:
						$select = "SELECT objects.id AS id ";
						$return = "object";
						break;
					}
					break;
	
				case "WHERE":
					$org_where = trim($matches[2]);
					if (preg_match_all("/[ ]*(.+?)( AND| OR|$)/", $org_where, $wmatches))
					{
						$wmatches = $wmatches[1];
						//PrintPre($wmatches);
						foreach ($wmatches AS $match)
						{
							$match = trim($match);
							if ($match{0} == "(")
								$match = substr($match, 1, strlen($match)-1);
	
							$parts = explode(":", $match, 2);
	
							$invert = "";
							if ($parts[0]{0} == "!")
							{
								$invert = "!";
								$parts[0] = substr($parts[0], 1, strlen($parts[0])-1);
							}
	
							switch ($parts[0])
							{
							case "property":
								$org_where = str_replace($match, "$invert(objects.".$parts[1].")", $org_where);
								break;
	
							case "var":
								$parts2 = explode("=", $parts[1]);
	
								if (!isset($vars_array[$parts2[0]]))
								{
									$vars++;
									$vars_array[$parts2[0]] = $vars;
								}
								$num = $vars_array[$parts2[0]];
								$org_where = str_replace($match, "values$num.data$invert=".$parts2[1], $org_where);
								break;
	
							case "link":
								$parts2 = explode("=", $parts[1]);
								switch ($parts2[0])
								{
								case "node_top":
									$org_where = str_replace($match, "$invert(links.node_top=".$parts2[1]." AND links.node_bottom=objects.node_id)", $org_where);
									break;
	
								case "node_bottom":
									$org_where = str_replace($match, "$invert(links.node_bottom=".$parts2[1]." AND links.node_top=objects.node_id)", $org_where);
									break;
	
								case "type":
									$org_where = str_replace($match, "$invert(links.type=".$parts2[1].")", $org_where);
									break;
	
								case "node_id":
								default:
									$org_where = str_replace($match, "$invert((links.node_bottom=".$parts2[1]." AND links.node_top=objects.node_id) OR (links.node_top=".$parts2[1]." AND links.node_bottom=objects.node_id))", $org_where);
									break;
								}
								$links = true;
								break;
							}
						}
					}
	
					$where_more = "";
					foreach ($vars_array as $key => $value)
					{
						$where_more .= "(values$value.object_id=objects.id AND values$value.var_id=vars$value.id AND vars$value.name='$key') AND ";
					}
	
					$where = "WHERE $where_more ($org_where)";
					break;
	
				case "NODESORTBY":
					$org_sort = trim($matches[2]);
					if (preg_match_all("/[ ]*(.+?)(,|$)/", $org_sort, $wmatches))
					{
						$wmatches = $wmatches[1];
	
						foreach ($wmatches AS $match)
						{
							$match = trim($match);
	
							$parts = explode(":", $match, 2);
	
							$invert = " DESC";
							if ($parts[0]{0} == "!")
							{
								$invert = " ASC";
								$parts[0] = substr($parts[0], 1, strlen($parts[0])-1);
							}
	
							switch ($parts[0])
							{
							case "property":
								$org_sort = str_replace($match, "objects.".$parts[1].$invert, $org_sort);
								break;
							}
						}
					}
						$nodesortby = "ORDER BY $org_sort";
					break;
	
				case "SORTBY":
					$org_sort = trim($matches[2]);
					if (preg_match_all("/[ ]*(.+?)(,|$)/", $org_sort, $wmatches))
					{
						$wmatches = $wmatches[1];
	
						foreach ($wmatches AS $match)
						{
							$match = trim($match);
	
							$parts = explode(":", $match, 2);
	
							$invert = false;
							if ($parts[0]{0} == "!")
							{
								$invert = true;
								$parts[0] = substr($parts[0], 1, strlen($parts[0])-1);
							}
	
							switch ($parts[0])
							{
							case "property":
								$sort[] = array("property:".$parts[1], $invert);
								//$org_sort = str_replace($match, "objects.".$parts[1].($invert ? "" : " DESC"), $org_sort);
								break;
	
							case "var":
								$sort[] = array($parts[1], $invert);
								break;
							}
						}
					}
					//if (!empty($org_sort))
					//	$sortby = "ORDER BY $org_sort";
					break;
			}
	
			$len = strlen($matches[0]) - strlen($matches[3]);
			$query = trim(substr($query, $len, strlen($query)-$len));
		}
		else
		{
			if (!empty($query))
			{
				echo "nåt galet hände..\n";
				echo $query;
			}
		}
	}
	
	global $db_prefix;

	$from = "FROM `".$db_prefix."objects` AS `objects`";
	
	for ($n = 1; $n <= $vars; $n++)
		$from .= ", `".$db_prefix."vars` AS `vars$n`, `".$db_prefix."values` AS `values$n`";
		
	if ($links)
		$from .= ", `".$db_prefix."links` AS `links`";

	$sql = "$select $from $where $nodesortby";

	$result = mysql_query($sql) or die("fetch " . mysql_errno() . " " . mysql_error());

	if ($return == "count")
	{
		$row = mysql_fetch_array($result, MYSQL_ASSOC);
		//$_SESSION['debug'] += microtime_float()-$time;
		$_SESSION['murrix']['querycache'][$query2] = $row['count'];
		return $row['count'];
	}

	if ($return == "object")
	{
		$objects = array();
		while ($row = mysql_fetch_array($result, MYSQL_ASSOC))
		{
			$object = new mObject();
			if (!$object->loadByObjectId($row['id']))
				echo $object->getLastError();
			$objects[] = $object;
		}
	}
	else if ($return == "node")
	{
		$objects = array();
		while ($row = mysql_fetch_array($result, MYSQL_ASSOC))
		{
			$object = new mObject();
			$object->node_id = $row['node_id'];
			$object->id = $row['id'];
			$object->version = $row['version'];
			$object->language = $row['language'];
			$objects[] = $object;
		}

		$nodes = array();
		$node_list = array();
		foreach ($objects as $object)
		{
			// We have a prior version already
			if (isset($node_list[$object->getNodeId()]))
			{
				if ($node_list[$object->getNodeId()] != $_SESSION['murrix']['language']) // Not a perfect match
				{
					if ($object->getLanguage() == $_SESSION['murrix']['language']) // We have a better match
					{
						$nodes[$object->getNodeId()] = $object;
						$node_list[$object->getNodeId()] = $object->getLanguage();
					}
				}
				/*else // Perfect language match
				{
					if ($node_list[$object->getNodeId()]->version < $object->version)// Do we have a better version
					{
						$nodes[$object->getNodeId()] = $object;
						$node_list[$object->getNodeId()] = $object->getLanguage();
					}
				}*/
			}
			else // We have no prior match
			{
				$nodes[$object->getNodeId()] = $object;
				$node_list[$object->getNodeId()] = $object->getLanguage();
			}
		}

		$objects2 = array_values($nodes);
		
		$objects = array();
		foreach ($objects2 as $object2)
		{
			$object = new mObject();
			if (!$object->loadByObjectId($object2->getId()))
				echo $object->getLastError();
			$objects[] = $object;
		}
	}
	
	if (!empty($sort))
	{
		$sort = array_reverse($sort);
		foreach ($sort as $sortby)
		{
			SortBy(&$objects, $sortby[0], $sortby[1]);
		}
	}
	
	$_SESSION['murrix']['querycache'][$query2] = $objects;
	return $objects;
}
	function draw(&$system, $args)
	{
		if (isset($args['object_id']))
		{
			$object = new mObject();
			$object->loadByObjectId($args['object_id']);
		}
		else
			$object = new mObject($this->getNodeId($args));
		
		$javascript = "";
		$data = "";
		if ($object->getNodeId() > 0)
		{
			if ($object->hasRight("write"))
			{
				$edit_args = array();
				$data = compiletplWithOutput("scripts/edit", $edit_args, $object);
				$javascript = $edit_args['output']['js'];
			}
			else
				$data = compiletpl("message", array("title"=>ucf(i18n("error")), "message"=>ucf(i18n("not enough rights"))));
		}
		else
			$data = compiletpl("message", array("title"=>ucf(i18n("error")), "message"=>ucf(i18n("the specified path is invalid"))));
		
		$system->setZoneData($this->zone, utf8e($data));
		
		if (!empty($javascript))
			$system->addJSScript($javascript);
	}
Exemple #17
0
function createGroup($name, $description, $create_home = true)
{
	if (!isAdmin)
		return ucf(i18n("not enough rights to create new group"));

	if (empty($name))
		return ucf(i18n("a name must be specified"));
	
	$group = new mGroup();
	$group->setByName($name);

	if ($group->id > 0)
		return ucf(i18n("a group with that name already exists"));

	$group->name = $name;
	$group->description = $description;
	$ret = $group->save();
	
	if ($create_home && getNode("/root/home/groups/".$name) <= 0)
	{
		$home = new mObject();
		$home->setClassName("folder");
		$home->loadVars();
	
		$home->name = $name;
		$home->language = $_SESSION['murrix']['language'];
		$home->rights = "$name=rc";
	
		$home->setVarValue("description", "This is the home of $name");
	
		if ($home->save())
		{
			$home->setMeta("initial_rights", "$name=rwc");
			$home_folder = new mObject(getNode("/root/home/groups"));
			$home->linkWithNode($home_folder->getNodeId());
		}
		else
		{
			$message = "Operation unsuccessfull.<br/>";
			$message .= "Error output:<br/>";
			$message .= $home->getLastError();
			return $message;
		}
		
		$group->home_id = $home->getNodeId();
		$group->save();
	}
	
	return $ret;
}
	function execute(&$system, $args)
	{
		if (isset($args['action']))
		{
			$object = new mObject($args['parent_id']);
	
			if ($object->hasRight("write"))
			{
				if (count($args['node_ids']) == 0)
				{
					$system->addAlert(ucf(i18n("you must select at least one object")));
					return;
				}
				
				if ($args['action'] == "delete")
				{
					foreach ($args['node_ids'] as $node_id)
					{
						$child = new mObject($node_id);
						
						$not_allowed_str = "";
						if ($child->hasRight("write"))
							$child->deleteNode();
						else
							$not_allowed_str .= $child->getPathInTree()."\n";
							
						if (!empty($not_allowed_str))
							$system->addAlert(ucf(i18n("you did not have enough rights to delete these nodes:"))."\n$not_allowed_str");
					}
					
					clearNodeFileCache($object->getNodeId());
				}
				else
				{
					if (isset($args['remote_node_id']))
						$remote_node_id = $args['remote_node_id'];
					else
						$remote_node_id = getNode($args['path']);
		
					if ($remote_node_id > 0)
					{
						$remote = new mObject($remote_node_id);
		
						if ($remote->hasRight("write"))
						{
							switch ($args['action'])
							{
								case "move":
								foreach ($args['node_ids'] as $node_id)
								{
									$child = new mObject($node_id);
				
									$child->linkWithNode($remote_node_id, "sub");
									$child->unlinkWithNode($object->getNodeId(), "sub", "bottom");
									clearNodeFileCache($object->getNodeId());
									clearNodeFileCache($child->getNodeId());
									clearNodeFileCache($remote_node_id);
								}
								break;
								
								case "link":
								foreach ($args['node_ids'] as $node_id)
								{
									$child = new mObject($node_id);
				
									$child->linkWithNode($remote_node_id, "sub");
									clearNodeFileCache($remote_node_id);
									clearNodeFileCache($child->getNodeId());
								}
								break;
							}
						}
						else
						{
							$system->addAlert(ucf(i18n("you don't have enough rights on the target")));
							return;
						}
					}
					else
					{
						$system->addAlert(ucf(i18n("the remote object you specified does not exist")));
						return;
					}
				}
			}
			else
			{
				$system->addAlert(ucf(i18n("you don't have enough rights")));
				return;
			}
		}

		$this->draw($system, $args);
	}
	function draw(&$system, $args)
	{
		if (empty($args['view']))
			$args['view'] = "xml";
	
		$object = new mObject($this->getNodeId($args));
		
		$javascript = "";
		$data = "";
		if ($object->getNodeId() > 0)
		{
			if ($object->hasRight("create"))
			{
				$data = compiletplWithOutput("scripts/import/view", $args, $object);
				$javascript = $args['output']['js'];
			}
			else
				$data = compiletpl("message", array("title"=>ucf(i18n("error")), "message"=>ucf(i18n("not enough rights"))));
		}
		
		$system->setZoneData($this->zone, utf8e($data));
		
		if (!empty($javascript))
			$system->addJSScript($javascript);
	}
		<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
		
		<link rel="shortcut icon" href="<?php 
echo geticon("murrix");
?>
" type="image/x-icon"/>
			
		<link rel="stylesheet" type="text/css" href="<?php 
echo "{$wwwpath}/design/" . $_SESSION['murrix']['theme'] . "/stylesheets/nodebrowse.css";
?>
"/>
	</head>
	
	<body class="nodebrowse">
		<?php 
echo compiletpl("title/big", array("left" => img(geticon($object->getIcon())) . " " . $object->getName(), "right" => $object->getNodeId()));
?>
		<div class="main">
			<div class="container">
				<?php 
echo $object->getPathInTree();
?>
			</div>
		</div>
		<div class="container">
			<center>
				<input type="button" class="submit" onclick="<?php 
echo "opener.document.getElementById('" . $_GET['input_id'] . "').value='" . $object->getNodeId() . "';";
?>
;parent.window.close();" value="<?php 
echo ucf(i18n("select"));
	function sendMessage($subject, $text, $attachment)
	{
		if ($this->id <= 0)
			return false;
			
		$user_id = $_SESSION['murrix']['user']->id;
		$_SESSION['murrix']['user']->id = $this->id;
		
		$home = new mObject($this->home_id);
		
		$inbox_id = getNode($home->getPath()."/inbox", "eng");
		
		if ($inbox_id < 0)
		{
			$inbox = new mObject();
			$inbox->setClassName("folder");
			$inbox->loadVars();

			$inbox->name = "inbox";
			$inbox->language = $_SESSION['murrix']['language'];

			$inbox_id = $inbox->save();
			
			$inbox->rights = $home->getMeta("initial_rights", $home->getRights());
			
			clearNodeFileCache($home->getNodeId());
			$inbox->linkWithNode($home->getNodeId());
		}
		else
			$inbox = new mObject($inbox_id);
		
		$message = new mObject();
		$message->setClassName("message");
		$message->loadVars();
		
		$message->name = $subject;
		$message->language = $_SESSION['murrix']['language'];
		
		$message->setVarValue("text", $text);
		$message->setVarValue("attachment", $attachment);
		$message->setVarValue("sender", $_SESSION['murrix']['user']->name);

		$message->save();
		
		$message->rights = $inbox->getMeta("initial_rights", $inbox->getRights());
		
		clearNodeFileCache($inbox->getNodeId());
		$message->linkWithNode($inbox->getNodeId());
		
		$_SESSION['murrix']['user']->id = $user_id;
		
		return true;
	}
Exemple #22
0
			<?php 
echo $args['message'];
?>
		</form>
	</fieldset><br/>
<?
}

$links = $object->getLinks();
$linklist = array();
$linklist[] = array(ucf(i18n("type")), ucf(i18n("remote node")), ucf(i18n("remote node is on"))."...", "&nbsp;");
foreach ($links as $link)
{
	if ($link['remote_id'] <= 0)
		$remote = ucf(i18n("unknown"));
	else
	{
		$remote_obj = new mObject($link['remote_id']);
		$remote = cmd(img(geticon($remote_obj->getIcon()))."&nbsp;".$remote_obj->getName(), "exec=show&node_id=".$remote_obj->getNodeId());
	}

	if ($object->hasRight("write") && ($object->getNumLinksSubBottom() > 1 || ($link['type'] != "sub" && $link['direction'] != "bottom")))
		$delete = cmd(img(geticon("delete"))."&nbsp;".ucf(i18n("delete")), "exec=links&action=deletelink&node_id=".$object->getNodeId()."&remote_id=".$link['remote_id']."&type=".$link['type']."&direction=".($link['direction'] == "top" ? "bottom" : "top"));
	else
		$delete = "";

	$linklist[] = array($link['type'], $remote, ucf(i18n($link['direction'])), $delete);
}

echo compiletpl("table", array("list"=>$linklist, "endstring"=>"% ".i18n("rows")), $object);
?>
<div class="main">
	<div class="container">
		<center>
		<?
			global $wwwpath;
		
			$parent = new mObject(getNode(getParentPath($object->getPathInTree())));
			
			$invert = "";
			if ($parent->getMeta("sort_direction", "") == "asc")
				$invert = "!";
			
			$family = fetch("FETCH node WHERE link:node_top='".$parent->getNodeId()."' AND link:type='sub' AND !property:class_name='comment' AND !property:class_name='poll_answer' NODESORTBY property:version SORTBY $invert".$parent->getMeta("sort_by", "property:name"));
			
			$family = getReadable($family);
			
			$prev = false;
			$next = false;
			
			for ($n = 0; $n < count($family); $n++)
			{
				if ($family[$n]->getNodeId() == $object->getNodeId())
				{
					if ($n > 0)
						$prev = $family[$n-1];
						
					if ($n < count($family)-1)
						$next = $family[$n+1];
				
					break;
				}
	function execute(&$system, $args)
	{
		if (isset($args['node_id']))
		{
			if (isAnonymous())
			{
				$system->addAlert(ucf(i18n("anonymous user can not vote")));
				return;
			}
			
			if (!isset($args['answer']))
			{
				$system->addAlert(ucf(i18n("you must choose an alternative")));
				return;
			}
		
			$poll = new mObject($args['node_id']);
			
			if ($poll->getNodeId() > 0)
			{
				$now = time();
				
				if (strtotime($poll->getVarValue("closedate")) < $now)
				{
					$system->addAlert(ucf(i18n("this poll is closed")));
					return;
				}
				
				if (strtotime($poll->getVarValue("opendate")) > $now)
				{
					$system->addAlert(ucf(i18n("this poll is not open yet")));
					return;
				}
				
				$answers = fetch("FETCH node WHERE link:node_top='".$poll->getNodeId()."' AND link:type='sub' AND property:class_name='poll_answer' AND property:name='".$_SESSION['murrix']['user']->id."' NODESORTBY property:version");
				
				if (count($answers) > 0)
				{
					$system->addAlert(ucf(i18n("you have already voted in this poll")));
					return;
				}
			
				$answer = new mObject();
				$answer->setClassName("poll_answer");
				$answer->loadVars();
				
				$answer->name = $_SESSION['murrix']['user']->id;
				$answer->language = $_SESSION['murrix']['language'];
				$answer->rights = $poll->rights;;
				
				$answer->setVarValue("answer", $args['answer']);

				$answer->save();
		
				clearNodeFileCache($poll->getNodeId());
				$answer->linkWithNode($poll->getNodeId());
			}
		}
	
		$this->draw($system, $args);
	}
		self.close();
	</script>
	<?
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
	<head>
		<title>MURRiX File Upload</title>
		<META NAME="ROBOTS" CONTENT="NOINDEX">
	</head>
	
	<body style="margin: 0; padding: 0;">
		<form action="fileupload.php" enctype="multipart/form-data" method="post" name="uploadForm">
			<div>
				<input style="margin: 0;display: none;" type="hidden" name="MAX_FILE_SIZE" value="2000000"/>
				<input style="margin: 0;display: none;" type="hidden" name="varid" value="<?php 
echo $varid;
?>
"/>
				<input style="margin: 0;display: none;" name="action" type="hidden" value="upload"/>
				<input style="margin: 0;display: none;" name="parent_id" type="hidden" value="<?php 
echo $parent->getNodeId();
?>
"/>
				<input style="margin: 0;" name="file" type="file"/>
				<input style="margin: 0;" name="submit" type="submit" value="Upload"/>
			</div>
		</form>
	</body>
</html>
<?
$divider = empty($args['divider']) ? "/" : $args['divider'];

$parts = explode("/", $args['path']);
array_shift($parts);

$path2 = "";
$count = 0;
foreach ($parts as $part)
{
	$path2 .= "/$part";
	if ($count > 0)
		echo "&nbsp;$divider&nbsp;";

	$object = new mObject(getNode($path2));
	if ($object->hasRight("read"))
		echo cmd($part, "exec=show&node_id=".$object->getNodeId());
	else
		echo $part;
		
	$count++;
}
?>
	function execute(&$system, $args)
	{
		if (isset($args['action']))
		{
			if ($args['action'] == "deletelink")
			{
				$object = new mObject($args['node_id']);
	
				/*$links = $object->getLinks();
				if ($object->getNumLinksSubBottom() <= 1 && ($link['type'] == "sub" && $link['direction'] == "bottom"))
					$response->addAlert(ucf(i18n("unable to delete last link")));
				else*/ 
				if ($object->hasRight("write"))
				{
					$object->unlinkWithNode($args['remote_id'], $args['type'], $args['direction']);
					clearNodeFileCache($object->getNodeId());
					clearNodeFileCache($args['remote_id']);

					$_SESSION['murrix']['path'] = $object->getPathInTree();
					$system->triggerEventIntern("newlocation", $args);
				}
				else
					$system->addAlert(ucf(i18n("you don't have enough rights to delete this link")));
					
				return;
			}
			else if ($args['action'] == "newlink")
			{
				$object = new mObject($args['node_id']);
	
				if ($object->hasRight("write"))
				{
					if (isset($args['remote_node_id']))
						$remote_node_id = $args['remote_node_id'];
					else
						$remote_node_id = getNode($args['path']);

					if ($remote_node_id > 0)
					{
						$remote = new mObject($remote_node_id);

						if ($remote->hasRight("write"))
						{
							if (!$object->linkWithNode($remote_node_id, $args['type']))
							{
								$system->addAlert(ucf(i18n($object->error)));
								return;
							}
							clearNodeFileCache($object->getNodeId());
							clearNodeFileCache($remote_node_id);
						}
						else
						{
							$system->addAlert(ucf(i18n("you don't have enough rights on the remote object to create this link")));
							return;
						}
					}
					else
					{
						$system->addAlert(ucf(i18n("the remote object you specified does not exist")));
						return;
					}
				}
				else
				{
					$system->addAlert(ucf(i18n("you don't have enough rights to create a link")));
					return;
				}
				
				$args['message'] = ucf(i18n("created new link successfully"));
				$_SESSION['murrix']['path'] = $object->getPathInTree();
				$system->triggerEventIntern("newlocation", $args);
				return;
			}
		}
		
		$this->draw($system, $args);
	}
										$partner = new mObject($links[0]['remote_id']);
										?>
										<tr>
											<td class="left">
												<?php 
echo ucf(i18n("partner"));
?>
											</td>
											<td>
												<?php 
echo img(geticon("user"));
?>
											</td>
											<td class="right">
												<?php 
echo cmd($partner->getName(), "exec=show&node_id=" . $partner->getNodeId());
?>
											</td>
										</tr>
									<?
									}
									
									$data = $object->getVarValue("mobilephones");
									if (!empty($data)) {
									?>
									<tr>
										<td class="left">
											<?php 
echo ucf(i18n("mobilephones"));
?>
										</td>
	function draw(&$system, $args)
	{
		$parent_id = $this->getNodeId($args);
		$object = new mObject($parent_id);
	
		$javascript = "";
		$data = "";
		if ($object->hasRight("create") || $object->hasRight("comment") && $args['class_name'] == "comment")
		{
			$newobject = new mObject();
			$newobject->setClassName(isset($args['class_name']) ? $args['class_name'] : "folder");
			$newobject->loadVars();
			$newobject->loadClassIcon();
			
			$new_args = array("parent_node_id"=>$object->getNodeId());
			$data = compiletplWithOutput("scripts/new", $new_args, $newobject);
			$javascript = $new_args['output']['js'];
		}
		else
			$data = compiletpl("message", array("title"=>ucf(i18n("error")), "message"=>ucf(i18n("not enough rights"))), $object);
			

		$system->setZoneData($this->zone, utf8e($data));
		if (!empty($javascript))
			$system->addScript($javascript);
	}
if ($_POST['action'] == "newregion")
{
	$region = new mObject();
	$region->setClassName("image_region");
	$region->loadVars();
	
	$object->language = $_SESSION['murrix']['language'];
	$region->name = "ImageRegion";
	$region->setVarValue("image_width", $_POST['image_width']);
	$region->setVarValue("image_height", $_POST['image_height']);
	$region->setVarValue("text", trim($_POST['Textbox']));
	$region->setVarValue("params", $_POST['PMouseX'].",".$_POST['PMouseY'].",".$_POST['UMouseX'].",".$_POST['UMouseY']);
	
	if ($region->save())
	{
		clearNodeFileCache($object->getNodeId());
		$region->linkWithNode($object->getNodeId());
		
		$remote_node_ids = explode(",", $_POST['remote_node_ids']);
		
		foreach ($remote_node_ids as $rnode_id)
			$region->linkWithNode(trim($rnode_id), "data");
			
		echo "Region created successfully";
	}
	else
	{
		$message = "Operation unsuccessfull.<br/>";
		$message .= "Error output:<br/>";
		$message .= $object->getLastError();
		echo $message;