function exec($args, $stdin, &$stdout, &$stderr, &$system) { if (!empty($args)) { list($rights, $path) = explode(" ", $args, 2); 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 change rights")); return true; } $object->setRights($rights); if ($object->saveCurrent()) $stdout = ucf(i18n("changed rights successfully")); else $stderr = ucf(i18n("failed to change rights")); } else { $stdout = "Usage: chmod [rightstring] [path]\n"; $stdout .= "Example: chmod rwcrwcrwc /root"; } return true; }
function actionSave(&$system, $args) { $bError = false; if (empty($args['name'])) { $system->addAlert(ucf(i18n("please enter a name"))); $bError = true; } if (!(strpos($args['name'], "\\") === false) || !(strpos($args['name'], "/") === false) || !(strpos($args['name'], "+") === false)) { $system->addAlert(ucf(i18n("you can not use '\\', '/' or '+' in the name"))); $bError = true; } if (!$bError) { $object = new mObject($this->getNodeId($args)); if ($object->getNodeId() > 0) { if ($object->hasRight("write")) { $object->name = trim($args['name']); $object->icon = trim($args['icon']); $newlang = ($object->getLanguage() != trim($args['language'])); $object->language = trim($args['language']); $vars = $object->getVars(); foreach ($vars as $var) { $key = "v".$var->id; $value = (isset($args[$key]) ? $args[$key] : (isset($args[$var->id]) ? $args[$var->id] : "")); if (empty($value) && $var->getRequired() && $var->getType() != "boolean") { $system->addAlert(utf8e(ucf(str_replace("_", " ", i18n($var->getName(true))))." ".i18n("is a required field"))); return; } $object->setVarValue($var->name, $value); } if ($args['newversion'] == "on" || $newlang) $ret = $object->save(); else $ret = $object->saveCurrent(); if ($ret) { $system->addRedirect("exec=show&node_id=".$object->getNodeId()); clearNodeFileCache($object->getNodeId()); $links = $object->getLinks(); foreach ($links as $link) { if ($link['type'] == "sub") clearNodeFileCache($link['remote_id']); } } else { $message = "Operation unsuccessfull.<br/>"; $message .= "Error output:<br/>"; $message .= $object->getLastError(); $system->addAlert($message); } } } } }