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) { 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; }
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 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); }
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 (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 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 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; }
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); }
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; }
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); } } } } }
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;
// 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/>"); }
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); }
if (count($answers) > 0) { if ($object->getVarValue("hide_result") == "false") { $answers_all = fetch("FETCH node WHERE link:node_top='".$object->getNodeId()."' AND link:type='sub' AND property:class_name='poll_answer' NODESORTBY property:version"); $answers = array(); foreach ($answers_all as $answer) { if (!isset($answers[$answer->getName()])) $answers[$answer->getName()] = $answer; else { clearNodeFileCache($answer->getNodeId()); $answer->deleteNode(); } } $answers = array_values($answers); $total = count($answers); $answer_result = array(); foreach ($answers as $answer) $answer_result[$answer->getVarValue("answer")]++; /*$answer_max = 0; foreach ($answer_result as $ar)
function execute(&$system, $args) { $parent_id = $this->getNodeId($args); $parent = new mObject($parent_id); $class_name = ""; if (!empty($args['class_name'])) $class_name = $args['class_name']; if (empty($class_name)) $class_name = $parent->getMeta("default_class_name", "folder"); if ($parent->hasRight("create") || $parent->hasRight("comment") && $class_name == "comment") { if (isset($args['action']) && $args['action'] == "save") { if (!empty($class_name)) { $languages = explode(",", $args['languages']); $languages_tosave = array(); foreach ($languages as $language) { if (!empty($args[$language.'_name'])) { if (!(strpos($args[$language.'_name'], "\\") === false) || !(strpos($args[$language.'_name'], "/") === false) || !(strpos($args[$language.'_name'], "+") === false)) { $system->addAlert(ucf(i18n($language))." ".i18n("version").": ".ucf(i18n("you can not use '\\', '/' or '+' in the name"))); return; } $languages_tosave[] = $language; } } if (count($languages_tosave) == 0) { $system->addAlert(ucf(i18n("nothing to save"))); return; } $languages = $languages_tosave; $object = new mObject(); $object->setClassName($class_name); $object->loadVars(); $saved = false; foreach ($languages as $language) { $object->name = trim($args[$language.'_name']); $object->icon = trim($args[$language.'_icon']); $object->language = $language; $object->rights = $parent->getMeta("initial_rights", $parent->getRights()); $vars = $object->getVars(); foreach ($vars as $var) { $key = $language."_v".$var->id; $value = (isset($args[$key]) ? $args[$key] : ""); if (empty($value) && $var->getRequired() && $var->getType() != "boolean") { $system->addAlert(utf8e(ucf(i18n($language))." ".i18n("version").": ".ucf(str_replace("_", " ", i18n($var->getName(true))))." ".i18n("is a required field"))); return; } $object->setVarValue($var->name, $value); } if ($object->save()) { guessObjectType($object); $saved = true; } else { $message = "Operation unsuccessfull.<br/>"; $message .= "Error output:<br/>"; $message .= $object->getLastError(); $system->addAlert($message); return; } } if ($saved) { clearNodeFileCache($parent->getNodeId()); $object->linkWithNode($parent->getNodeId()); $system->addRedirect("exec=show&node_id=".$object->getNodeId()); } return; } } } $args['class_name'] = $class_name; $this->draw($system, $args); }