static function process_session_request() { $t = $GLOBALS["t"]; $tname = $t["title"]; $tfolder = $t["folder"]; if (!empty($_REQUEST["today"])) { if (!is_numeric($_REQUEST["today"])) { $_REQUEST["today"] = modify::datetime_to_int($_REQUEST["today"]); } $today = sys_getdate($_REQUEST["today"]); } else { $today = sys_getdate(); } if (empty($_SESSION[$tname]["_" . $tfolder]["today"]) or !is_numeric($_SESSION[$tname]["_" . $tfolder]["today"]) or !empty($_REQUEST["today"]) or $_SESSION[$tname]["_" . $tfolder]["today"] < 1) { $_SESSION[$tname]["_" . $tfolder]["today"] = mktime(0, 0, 0, $today["mon"], $today["mday"], $today["year"]); } if (!isset($_SESSION[$tname]["_" . $tfolder]["weekstart"])) { $_SESSION[$tname]["_" . $tfolder]["weekstart"] = WEEKSTART; } if (isset($_REQUEST["weekstart"]) and is_numeric($_REQUEST["weekstart"]) and $_REQUEST["weekstart"] >= 0 and $_REQUEST["weekstart"] <= 6) { $_SESSION[$tname]["_" . $tfolder]["weekstart"] = $_REQUEST["weekstart"]; } if (!isset($_SESSION[$tname]["_" . $tfolder]["markdate"])) { if (!empty($GLOBALS["current_view"]["MARKDATE"])) { $_SESSION[$tname]["_" . $tfolder]["markdate"] = $GLOBALS["current_view"]["MARKDATE"]; } else { $_SESSION[$tname]["_" . $tfolder]["markdate"] = "week"; } } if (isset($_REQUEST["markdate"]) and in_array($_REQUEST["markdate"], array("day", "week", "month", "year", "gantt", "all"))) { $_SESSION[$tname]["_" . $tfolder]["markdate"] = $_REQUEST["markdate"]; } }
static function get_filecontent($var, $args, $data) { $file = $data["filename"]["data"][0]; if (!file_exists($file)) { return ""; } return modify::displayfile("modules", $file, false, false); }
static function render_value($value, $unused, $unused2, $smarty) { if (!empty($smarty->field["INSECURE"])) { return modify::htmlfield(modify::unquote($value), false); } if (!empty($smarty->field["NO_CHECKS"])) { return modify::unquote($value); } return modify::htmlfield(modify::unquote($value)); }
function populate_row($row) { $row["view"] = "display"; $row["folder"] = 0; if ($pos = strpos($row["url"], "?")) { $url = array(); parse_str(substr($row["url"], $pos + 1), $url); $row = array_merge($row, $url); } $row["path"] = modify::getpath($row["folder"]); return $row; }
private static function _simple_calendar($id, $data, $recurrences, $subject, $message, $diff, $type = "") { $deliveries_rec = self::_calc_offset($recurrences, $diff); $delivery = strtotime($diff, $data["begin"]); if (!empty($deliveries_rec)) { $delivery = array_shift($deliveries_rec); } $begin = $data["begin"]; foreach ($recurrences as $recurrence) { if ($recurrence > $delivery) { $begin = $recurrence; break; } } $message = sprintf($message, modify::recurrences($data["recurs"], array(4, $delivery))); $subject = sprintf($subject, modify::shortdatetimeformat($begin)); db_notification_add("simple_calendar|" . $id . $type, $data["notification"], $subject, $message, $delivery, $deliveries_rec); }
static function render_png($data) { $filename = SIMPLE_CACHE . "/thumbs/graphviz_" . sha1($data) . ".png"; if (!file_exists($filename)) { file_put_contents($filename . ".dot", $data, LOCK_EX); $src = modify::realfilename($filename . ".dot"); $target = modify::realfilename($filename); $result = sys_exec(sys_find_bin("dot") . " -Kdot -Tpng -o" . $target . " " . $src); if ($result != "") { sys_log_message_log("php-fail", "proc_open: " . $result); $filename = SIMPLE_CACHE . "/thumbs/graphviz_" . sha1($result) . ".png"; if (!file_exists($filename)) { sys_render_text($filename, $result); } } } return $filename; }
static function render_value($value, $unused, $preview, $smarty) { $height = 350; if (isset($smarty->view["IMAGE_HEIGHT"])) { $height = $smarty->view["IMAGE_HEIGHT"]; } $lang = LANG; $id = sha1($value); if ($preview) { return <<<EOT \t <textarea id="{$id}" style="display:none;">{$value}</textarea> \t <div style="margin:2px; width:100%; height:{$height}px;"> \t\t<iframe style="margin:0px; padding:0px; width:99%; height:100%;" src="ext/lib/simple_spreadsheet/spreadsheet.php?mode=viewer&lang={$lang}&data={$id}"></iframe> \t </div> EOT; } return modify::nl2br($value); }
static function init() { self::$time_start = sys_get_microtime(); // clean request vars if (ini_get("magic_quotes_gpc") !== false and get_magic_quotes_gpc()) { modify::stripslashes($_REQUEST); } foreach ($_REQUEST as $key => $val) { if (is_array($val) and count($val) > 0) { $_REQUEST[$key] = array(); foreach ($val as $val2) { if (!is_array($val2)) { $_REQUEST[$key][$val2] = $val2; } } } } // set up smarty self::$smarty = new Smarty(); self::$smarty->register_prefilter(array("modify", "urladdon_quote")); if (isset($_REQUEST["print"])) { self::$smarty->register_outputfilter(array("modify", "striplinksforms")); } if (isset($_REQUEST["print"])) { self::$smarty->assign("print", $_REQUEST["print"]); } self::$smarty->compile_dir = SIMPLE_CACHE . "/smarty"; self::$smarty->template_dir = "templates"; self::$smarty->config_dir = "templates/css"; self::$smarty->compile_check = false; // refresh smarty cache if (DEBUG) { debug_check_tpl(); } // set up database if (!sql_connect(SETUP_DB_HOST, SETUP_DB_USER, sys_decrypt(SETUP_DB_PW, sha1(SETUP_ADMIN_USER)), SETUP_DB_NAME)) { $err = sprintf("{t}Cannot connect to database %s on %s.{/t}\n", SETUP_DB_NAME, SETUP_DB_HOST) . sql_error(); trigger_error($err, E_USER_ERROR); sys_die($err); } // verify credentials login_handle_login(); }
/** * Returns the headers of the specified message in an * associative array. Array keys are the header names, array * values are the header values. In the case of multiple headers * having the same names, eg Received:, the array value will be * an indexed array of all the header values. * * @param integer $msg_id Message number * @return mixed Either array of headers or false on error */ function getParsedHeaders($msg_id) { $headers = array(); if ($this->_state == NET_POP3_STATE_TRANSACTION) { $raw_headers = rtrim($this->getRawHeaders($msg_id)); $raw_headers = preg_replace("/\r\n[ \t]+/", ' ', $raw_headers); // Unfold headers $raw_headers = explode("\r\n", $raw_headers); foreach ($raw_headers as $value) { $name = strtolower(substr($value, 0, $pos = strpos($value, ':'))); $value = ltrim(substr($value, $pos + 1)); if ($name == "subject" or $name == "to" or $name == "from") { $value = modify::decode_subject($value); } if (isset($headers[$name]) and is_array($headers[$name])) { $headers[$name][] = $value; } elseif (isset($headers[$name])) { $headers[$name] = array($headers[$name], $value); } else { $headers[$name] = $value; } } return $headers; } return false; }
static function show_list($mirror_id) { setup::out("\n\t<div style='color:#ff0000;'>\n\t<b>{t}Warning{/t}</b>:<br>\n\t- Please make a complete backup of your database (e.g. using phpMyAdmin)<br>\n\t- Please make a complete backup of your sgs folder (e.g. /var/www/htdocs/sgs/)<br>\n\t- Make sure both backups are complete!\n </div>\n\t<br>\n\t{t}Downloading update list{/t} ...<br>\n "); $mirror = self::$mirrors[$mirror_id]; $ctx = stream_context_create(array("http" => array("timeout" => 5))); $data = @file_get_contents($mirror["url"], 0, $ctx); $match = array(); preg_match_all($mirror["pattern"], $data, $match); if (!empty($match[1]) and $data != "") { $found = false; foreach ($match[1] as $key => $item) { if ($key > 4) { break; } if (strpos("@" . $item, CORE_VERSION_STRING) and !DEBUG) { break; } if (!empty($match[3][$key]) and strtotime($match[3][$key]) + 3600 > time()) { continue; } $found = true; $check = true; if (!empty($match[2][$key])) { $match_version = array(); preg_match("/php (\\d+\\.\\d+\\.\\d+)/i", $match[2][$key], $match_version); if (!empty($match_version[1]) and version_compare(PHP_VERSION, $match_version[1], "<")) { setup::out(sprintf("{t}Setup needs php with at least version %s !{/t}", $match_version[1])); $check = false; } preg_match("/" . SETUP_DB_TYPE . " (\\d+\\.\\d+\\.\\d+)/i", $match[2][$key], $match_version); if (!empty($match_version[1])) { $db_version = str_replace(".", "", $match_version[1]); $curr_version = sgsml_parser::sql_version(); if ($curr_version < $db_version) { setup::out(sprintf("{t}Wrong database-version (%s). Please use at least %s !{/t}", $curr_version, $match_version[1])); $check = false; } } } if ($check) { setup::out("<a href='updater.php?mirror=" . $mirror_id . "&token=" . modify::get_form_token() . "&release=" . $item . "'>{t}I n s t a l l{/t}</a> Simple Groupware ", false); setup::out($item . " (<a target='_blank' href='http://www.simple-groupware.de/cms/Release-" . str_replace(".", "-", $item) . "'>Changelog</a>)<br>"); } } if (!$found) { setup::out("{t}Already running latest release.{/t}<br>"); } } else { setup::out(sprintf("{t}Connection error: %s [%s]{/t}", $mirror["url"], "HTTP") . "<br>" . strip_tags($data, "<br><p><h1><center>")); } setup::out("{t}Server{/t}: <b>" . $mirror["name"] . "</b>, {t}use mirror from{/t}: ", false); foreach (self::$mirrors as $key => $sel_mirror) { if ($key == $mirror_id) { continue; } setup::out("<a href='updater.php?mirror=" . $key . "'>" . $sel_mirror["name"] . "</a> "); } setup::out("<br/>{t}Package from local file system (.tar.gz){/t}:<br/>{t}current path{/t}: " . str_replace("\\", "/", getcwd()) . "/<br/>"); foreach (scandir("./") as $file) { if ($file[0] == "." or !preg_match("|^SimpleGroupware\\_.*?.tar\\.gz\$|i", $file)) { continue; } setup::out("<a href='updater.php?token=" . modify::get_form_token() . "&cfile=" . $file . "'>{t}I n s t a l l{/t}</a> " . $file . "<br/>"); } setup::out("<form method='POST'><input type='hidden' name='token' value='" . modify::get_form_token() . "'><input type='text' name='cfile' value='/tmp/SimpleGroupware_0.xyz.tar.gz' style='width:300px;'> <input type='submit' class='submit' value='{t}I n s t a l l{/t}'><br>"); setup::out("<input type='checkbox' name='nobackup' value='1' onchange='change_links(this.checked);'/> " . sprintf("{t}Don't move old files to '%s'{/t}", SIMPLE_STORE . "/old/") . "</form>"); setup::out_exit('<div style="border-top: 1px solid black;">Powered by Simple Groupware, Copyright (C) 2002-2012 by Thomas Bley.</div></div></body></html>'); }
static function validate_login_ntlm($username, $password) { if (!function_exists("java_get_base")) { require "lib/java/java.php"; } if (!function_exists("java_require")) { sys_log_message_alert("login", sprintf("{t}%s is not compiled / loaded into PHP.{/t}", "PHP/Java Bridge")); return false; } java_require("jcifs-1.3.8_tb.jar"); $conf = new JavaClass("jcifs.Config"); $conf->setProperty("jcifs.smb.client.responseTimeout", "5000"); $conf->setProperty("jcifs.resolveOrder", "LMHOSTS,DNS"); $conf->setProperty("jcifs.smb.client.soTimeout", "10000"); $conf->setProperty("jcifs.smb.lmCompatibility", "0"); $conf->setProperty("jcifs.smb.client.useExtendedSecurity", false); $auth = sys_get_header("Authorization"); $session = new JavaClass("jcifs.smb.SmbSession"); $result = new Java("jcifs.smb.NtlmPasswordAuthentication", "", $username, $password); $username = $result->getUsername(); if (SETUP_AUTH_NTLM_SHARE) { $w = new Java("jcifs.smb.SmbFile", SETUP_AUTH_NTLM_SHARE, $result); $message = $w->canListFiles(); if ($message == "Invalid access to memory location.") { header("Location: index.php"); exit; } } else { $message = $session->logon(SETUP_AUTH_HOSTNAME_NTLM, $result); } if ($message != "" or $username == "") { sys_log_message_alert("login", sprintf("{t}Login failed from %s.{/t} (ntlm) ({t}Username{/t}: %s, %s)", _login_get_remoteaddr(), $username, $message)); return false; } $_SERVER["REMOTE_USER"] = modify::strip_ntdomain($username); if (empty($_REQUEST["folder"])) { $_REQUEST["redirect"] = 1; } return true; }
private static function _build_data($html, $data_arr = array(), $xml = false, $rss = false, $hidden = false) { $t = $GLOBALS["t"]; $data = array(); $i = 0; if (count($data_arr) == 0) { $data_arr = $t["data"]; } else { $data_arr = array($data_arr); } foreach ($data_arr as $asset) { if (!isset($asset["_id"])) { continue; } if (!in_array("id", $t["hidden_fields"]) and is_numeric($asset["_id"])) { $data[$i]["id"] = array("name" => "Id", "displayname" => "{t}Id{/t}", "type" => "", "field" => "id", "filter" => $asset["_id"], "width" => ""); } foreach ($t["fields"] as $akey => $value) { if ((isset($value["HIDDENIN"][$t["view"]]) or isset($value["HIDDENIN"]["all"])) and !$hidden) { continue; } if ($value["SIMPLE_TYPE"] == "password") { continue; } $aval = $asset[$akey]; if (!is_array($aval)) { $aval_data = explode("|", trim($aval, "|")); $aval = array("name" => "", "type" => "", "data" => $aval_data, "filter" => $aval_data); } if ($value["SIMPLE_TYPE"] == "checkbox") { if ($aval["data"][0] == "1") { $aval["filter"][0] = "{t}yes{/t}"; } else { $aval["filter"][0] = ""; } } if ($value["SIMPLE_TYPE"] == "date") { $aval["filter"][0] = modify::dateformat($aval["data"][0], "{t}m/d/Y{/t}"); } if ($value["SIMPLE_TYPE"] == "datetime") { $aval["filter"][0] = modify::dateformat($aval["data"][0], "{t}m/d/Y g:i a{/t}"); } $filter = ""; if (isset($aval["filter"]) and is_array($aval["filter"]) and isset($aval["filter"][0])) { if ($xml and !$rss and sgsml::type_is_multiple($value["SIMPLE_TYPE"]) and (empty($value["SIMPLE_SIZE"]) or $value["SIMPLE_SIZE"] != "1")) { $filter = "|" . implode("|", $aval["data"]) . "|"; } else { if ($xml and !$rss) { $filter = implode("|", $aval["data"]); } else { $filter = implode(" ", $aval["filter"]); } } } else { if (!is_array($aval["filter"]) and $aval != "") { $filter = $aval; } else { if ($html) { $filter = " "; } } } if (!empty($value["DISPLAYNAME"])) { $name = $value["DISPLAYNAME"]; $displayname = $value["DISPLAYNAME"]; } else { $name = $value["NAME"]; $displayname = $value["NAME"]; } if (!isset($value["WIDTH"])) { $value["WIDTH"] = ""; } if (count($aval["data"]) < 2) { $aval["data"] = implode(" ", $aval["data"]); } $linktext = ""; if (!empty($value["LINKTEXT"][0]["VALUE"][1]) and strpos($value["LINKTEXT"][0]["VALUE"][1], "ext/norefer.php") !== false) { $linktext = modify::link($value["LINKTEXT"][0]["VALUE"][1], $asset, 0, "folder2=" . rawurlencode($t["folder"]) . "&view2=" . rawurlencode($t["view"])); $linktext = str_replace("&iframe=1", "", $linktext); } $link = ""; if (!empty($value["LINK"][0]["VALUE"][1]) and strpos($value["LINK"][0]["VALUE"][1], "ext/norefer.php") !== false) { $link = modify::link($value["LINK"][0]["VALUE"][1], $asset, 0, "folder2=" . rawurlencode($t["folder"]) . "&view2=" . rawurlencode($t["view"])); $link = str_replace("&iframe=1", "", $link); } $data[$i][$akey] = array("name" => $name, "displayname" => $displayname, "field" => $value["NAME"], "data" => $aval["data"], "filter" => $filter, "type" => $value["SIMPLE_TYPE"], "width" => $value["WIDTH"], "linktext" => $linktext, "link" => $link); } if (!isset($asset["created"])) { $asset["created"] = 0; } if (!isset($asset["lastmodified"])) { $asset["lastmodified"] = 0; } if (is_array($asset["created"])) { $asset["lastmodified"] = $asset["created"]["data"][0]; } if (is_array($asset["lastmodified"])) { $asset["lastmodified"] = $asset["lastmodified"]["data"][0]; } if (empty($data[$i]["created"])) { $data[$i]["created"] = array("name" => "", "type" => "", "data" => $asset["created"]); } if (empty($data[$i]["lastmodified"])) { $data[$i]["lastmodified"] = array("name" => "", "type" => "", "data" => $asset["lastmodified"]); } if (!empty($asset["lastmodifiedby"]) and !isset($data[$i]["lastmodifiedby"]) and $html) { if (!in_array("lastmodified", $t["hidden_fields"])) { $data[$i]["lastmodified"] = array("name" => "lastmodified", "displayname" => "{t}Modified{/t}", "type" => "", "field" => "lastmodified", "filter" => sys_date("{t}m/d/Y{/t}", $asset["lastmodified"]), "width" => ""); } if (!in_array("lastmodifiedby", $t["hidden_fields"])) { $data[$i]["lastmodifiedby"] = array("name" => "lastmodifiedby", "displayname" => "{t}Modified by{/t}", "type" => "", "field" => "lastmodifiedby", "filter" => $asset["lastmodifiedby"], "width" => ""); } } $data[$i]["_id"] = array("name" => "", "type" => "", "data" => $asset["_id"]); $i++; } return $data; }
private static function _parse($file) { if ($data = sys_cache_get("icalendar_" . sha1($file))) { return $data; } if ($message = sys_allowedpath(dirname($file))) { sys_warning(sprintf("{t}Cannot read the file %s. %s{/t}", $file, $message)); return array(); } $rows = array(); if (!($handle = fopen($file, "rb"))) { sys_warning(sprintf("{t}Cannot read the file %s. %s{/t}", $file, "")); return array(); } $i = 0; $evopen = false; $lines = array(); while (!feof($handle)) { $line = fgets($handle, 10000); $line = str_replace(array("\r", "\n", "\\n"), array("", "", "\n"), $line); if ($line == "") { continue; } if ($line[0] == " ") { $lines[count($lines) - 1] .= substr($line, 1); } else { $lines[] = $line; } } fclose($handle); foreach ($lines as $line) { $line = trim($line); switch ($line) { case "BEGIN:VEVENT": $i++; $evopen = true; $rows[$i] = array("subject" => "", "begin" => 0, "ending" => 0, "created" => 0, "duration" => 0, "lastmodified" => 0, "allday" => "0", "location" => "", "description" => "", "organizer" => array(), "participants_ext" => array(), "category" => "", "priority" => "3", "recurrence" => "", "repeatinterval" => 1, "repeatcount" => "0", "repeatuntil" => 0, "repeatexcludes" => array()); break; case "BEGIN:VALARM": $evopen = false; break; case "END:VEVENT": $evopen = false; $begin = sys_getdate($rows[$i]["begin"]); $end = sys_getdate($rows[$i]["ending"]); if ($rows[$i]["lastmodified"] == 0) { $rows[$i]["lastmodified"] = $rows[$i]["created"]; } if ($begin["hours"] == 0 and $end["hours"] == 0 and $begin["minutes"] == 0 and $end["minutes"] == 0) { if ($rows[$i]["begin"] == $rows[$i]["ending"]) { $rows[$i]["ending"] += 86399; } else { $rows[$i]["ending"]--; } $rows[$i]["allday"] = "1"; } foreach ($rows[$i] as $key => $item) { if (is_array($item)) { $rows[$i][$key] = self::_array_flat($item); } } if ($rows[$i]["ending"] != "" and $rows[$i]["begin"] != "") { $rows[$i]["duration"] = $rows[$i]["ending"] - $rows[$i]["begin"]; } $rows[$i] = array_merge($rows[$i], trigger::calcappointment("", $rows[$i], null, "")); // $rows[$i]["begin_str"] = date("D d-m-y H:i:s",$rows[$i]["begin"]); // $rows[$i]["end_str"] = date("D d-m-y H:i:s",$rows[$i]["ending"]); break; default: if (!$evopen) { break; } $pos = strpos($line, ":"); $first = substr($line, 0, $pos); $value_str = str_replace(array("\\,", "\\n", "\\N"), array(",", "\n", "\n"), substr($line, $pos + 1)); if ($pos2 = strpos($first, ";")) { $kval = substr($first, 0, $pos2); } else { $kval = $first; } switch ($kval) { case "SUMMARY": $rows[$i]["subject"] = $value_str; break; case "DESCRIPTION": $rows[$i]["description"] = $value_str; break; case "LOCATION": $rows[$i]["location"] = $value_str; break; case "CLASS": if ($rows[$i]["category"] != "" and $value_str != "") { $rows[$i]["category"] .= ","; } $rows[$i]["category"] .= ucfirst(strtolower($value_str)); break; case "CATEGORIES": if ($rows[$i]["category"] != "") { $rows[$i]["category"] .= ","; } $rows[$i]["category"] .= $value_str; break; case "UID": $rows[$i]["id"] = $value_str; break; case "SEQUENCE": $rows[$i]["sequence"] = $value_str; break; case "DTSTART": $rows[$i]["begin"] = modify::ical_datetime_to_int($value_str); break; case "DTEND": $rows[$i]["ending"] = modify::ical_datetime_to_int($value_str); break; case "LAST-MODIFIED": $rows[$i]["lastmodified"] = modify::ical_datetime_to_int($value_str); break; case "DTSTAMP": $rows[$i]["created"] = modify::ical_datetime_to_int($value_str); break; case "DURATION": if (!preg_match("/PT?([0-9]{1,2}W)?([0-9]{1,2}D)?([0-9]{1,2}H)?([0-9]{1,2}M)?/", $value_str, $match)) { break; } $match = array_merge($match, array(0, 0, 0, 0)); $rows[$i]["ending"] = $rows[$i]["begin"] + str_replace("W", "", $match[1]) * 604800 + str_replace("D", "", $match[2]) * 86400 + str_replace("H", "", $match[3]) * 3600 + str_replace("M", "", $match[4]) * 60; break; case "RRULE": $value = explode(";", $value_str); foreach ($value as $val) { $val = explode("=", $val); switch ($val[0]) { case "FREQ": switch ($val[1]) { case "YEARLY": $rows[$i]["recurrence"] = "years"; break; case "MONTHLY": $rows[$i]["recurrence"] = "months"; break; case "WEEKLY": $rows[$i]["recurrence"] = "weeks"; break; case "DAILY": $rows[$i]["recurrence"] = "days"; break; } break; case "INTERVAL": $rows[$i]["repeatinterval"] = $val[1]; break; case "COUNT": $rows[$i]["repeatcount"] = $val[1]; break; case "UNTIL": $rows[$i]["repeatuntil"] = modify::ical_datetime_to_int($val[1]); break; } } break; case "EXDATE": $rows[$i]["repeatexcludes"][] = modify::ical_datetime_to_int($value_str); break; case "ORGANIZER": $value = explode(";", $value_str); $key = explode(";", $first); if (isset($value[1])) { $value[0] = $value[1]; } if (isset($key[1])) { $value[0] = str_replace(array("CN=", "\""), "", $key[1]) . " (" . str_replace(array("MAILTO:", "mailto:"), "", $value[0]) . ")"; } $rows[$i]["organizer"][] = $value[0]; break; case "ATTENDEE": $value = explode(";", $value_str); $key = explode(";", $first); if (isset($value[1])) { $value[0] = $value[1]; } $value[0] = str_replace(array("MAILTO:", "mailto:"), "", $value[0]); if (isset($key[1]) and strpos($key[1], "CN=") !== false) { $value[0] = str_replace(array("CN=", "\""), "", $key[1]) . " (" . $value[0] . ")"; } $rows[$i]["participants_ext"][] = $value[0]; break; default: // echo $line."<br>\n"; break; } break; } } sys_cache_set("icalendar_" . sha1($file), $rows, ICALENDAR_CACHE); return $rows; }
private static function _restore($filename) { ob_end_flush(); $filename = str_replace(" ", "+", $filename); $filename = SIMPLE_STORE . "/backup/" . basename($filename); if (!file_exists($filename)) { return "{t}file not found.{/t} (" . $filename . ")"; } if (filesize($filename) == 0) { return "{t}No entries found.{/t} (" . $filename . ")"; } self::_out("{t}Extracting files{/t}: " . $filename); self::_out(""); if (self::$_restore_here) { $ftitle = str_replace(array("__", "---", "--"), array("/", " ", " "), substr(modify::basename($filename), 0, -4)); $ftitle = substr($ftitle, strrpos($ftitle, "/") + 1); $id = folders::create(substr($ftitle, 0, 40), "blank", "", $_SESSION["folder"], false); self::$_restore_folder = $id; self::_out("{t}Insert{/t}: simple_sys_tree: " . $ftitle . " [" . $id . "]"); } $result = sys_exec(sys_find_bin("tar") . " -tf " . modify::realfilename($filename)); $file_list = explode("\n", $result); if (count($file_list) == 0) { return ""; } $base_dir = SIMPLE_STORE . "/restore_" . NOW . "/"; sys_mkdir($base_dir); $cmd = "cd " . modify::realfilename($base_dir) . " && " . sys_find_bin("tar") . " -xf " . modify::realfilename($filename); if (DEBUG) { self::_out("TAR: " . $cmd . "\n\n"); } echo sys_exec($cmd); $update_ids = array(); $update_folders = array(); $restore_maps = array(); $xml_file = array_shift($file_list); self::_out("{t}Parsing{/t}: " . $xml_file); $xml = simplexml_load_file($base_dir . $xml_file); foreach ($xml->table as $data) { $data = get_object_vars($data->assetfolder); unset($data["@attributes"]); $id = $data["id"]; if (!empty($data["anchor"])) { $existing = db_select_first("simple_sys_tree", array("id", "'' as lastmodified"), "anchor=@anchor@", "", array("anchor" => $data["anchor"])); if (!empty($existing["id"])) { unset($data["anchor"]); } } else { $existing = db_select_first("simple_sys_tree", array("id", "lastmodified"), "id=@id@", "", array("id" => $id)); } if (!isset($data["fdescription"])) { $data["fdescription"] = ""; } $ftype = $data["ftype"]; $keys = array("fsizecount", "fchsizecount", "fcount", "fchcount", "ffcount", "lft", "rgt", "flevel", "folder", "id", "ftype"); foreach ($keys as $key) { unset($data[$key]); } if (isset($restore_maps[$data["parent"]])) { $data["parent"] = $restore_maps[$data["parent"]]; } if (empty($existing["id"]) or self::$_restore_here) { $parent = db_select_value("simple_sys_tree", "id", "id=@id@", array("id" => $data["parent"])); if (empty($parent) or count($restore_maps) == 0 and self::$_restore_here) { $data["parent"] = self::$_restore_folder; } $id2 = folders::create($data["ftitle"], $ftype, $data["fdescription"], $data["parent"], false); self::_out("{t}Insert{/t}: simple_sys_tree: " . $data["ftitle"] . " [ID " . $id . " -> parent/id: " . $data["parent"] . "/" . $id2 . "]"); $restore_maps[$id] = $id2; $id = $id2; } else { $restore_maps[$id] = $existing["id"]; } if (!self::$_restore_missing and (!self::$_restore_onlynewer or $data["lastmodified"] > $existing["lastmodified"])) { self::_out("{t}Update{/t}: simple_sys_tree " . $id); $error = db_update("simple_sys_tree", $data, array("id=@id@"), array("id" => $id)); if ($error) { self::_out($error); } } } foreach ($xml->table as $table_item) { if (!isset($table_item->asset) or count($table_item->asset) == 0) { continue; } foreach ($table_item->asset as $asset) { $table = $table_item["name"]; if ($table == "simple_sys_tree") { continue; } $data = get_object_vars($asset); unset($data["@attributes"]); foreach ($data as $dkey => $val) { $obj = $asset->{$dkey}; if (!isset($obj["is_file"]) or $val == "") { continue; } $file_arr[$key] = ""; $file_arr = explode("|", trim($val, "|")); foreach ($file_arr as $key => $value) { foreach ($file_list as $file) { if (basename($file) != basename($value)) { continue; } $value = $base_dir . $file; break; } $file_arr[$key] = $value; } $data[$dkey] = "|" . implode("|", $file_arr) . "|"; } $id = $data["id"]; $existing = db_select_first($table, array("id", "lastmodified"), "id=@id@", "", array("id" => $id)); $folder = $data["folder"]; if (isset($restore_maps[$folder])) { $data["folder"] = $restore_maps[$folder]; } if (empty($existing["id"]) or self::$_restore_here) { if (self::$_restore_missing) { $data["id"] = $id; } else { $data["id"] = sql_genID($table) * 100; } self::_out("{t}Insert{/t}: " . $table . ": " . $data["id"]); $error = db_insert($table, $data); if ($error) { self::_out($error); } $update_folders[$data["folder"]] = $table; $update_ids[$data["folder"]][] = $data["id"]; } else { if (!self::$_restore_missing) { if (!self::$_restore_onlynewer or $data["lastmodified"] > $existing["lastmodified"]) { self::_out("{t}Update{/t}: " . $table . " " . $id); $error = db_update($table, $data, array("id=@id@"), array("id" => $id)); if ($error) { self::_out($error); } $update_folders[$data["folder"]] = $table; $update_ids[$data["folder"]][] = $id; } } } } } if (count($update_folders) > 0) { foreach ($update_folders as $folder => $table) { if (strpos($table, "nodb_")) { continue; } db_update_treesize($table, $folder); $ftype = str_replace("simple_", "", $table); $schema = db_get_schema(sys_find_module($ftype)); if (empty($schema["views"]["display"])) { continue; } if (!empty($schema["att"]["SQL_HANDLER"]) or !empty($schema["att"]["NO_SEARCH_INDEX"])) { continue; } self::_out("... "); $fields = $schema["fields"]; if (folder_in_trash($folder)) { continue; } foreach ($update_ids[$folder] as $id) { self::_out("{t}Rebuild search index{/t}: " . $table . " [" . $id . "]"); db_search_update($table, $id, $fields); } } } self::_out(""); $message = "{t}Restore complete{/t}: " . str_replace(array("__", "---", "--"), array("/", "] [", " ["), substr(modify::basename($filename), 0, -4)) . "]"; sys_log_message_log("info", $message); self::_out($message); return ""; }
$cid = sha1(serialize($_GET) . filemtime(__FILE__)) . ".png"; $cache_dir = "cache/"; if (@is_dir("../../../../simple_cache/artichow/")) { $cache_dir = "../../../../simple_cache/artichow/"; } if (file_exists($cache_dir . $cid) and filesize($cache_dir . $cid) > 0) { if ($cache_dir == "cache/") { header("Location: " . $cache_dir . $cid); } else { header("Content-Type: image/png; charset=utf-8"); readfile($cache_dir . $cid); } exit; } if (ini_get("magic_quotes_gpc") !== false and get_magic_quotes_gpc()) { modify::stripslashes($_REQUEST); } $data = array(0); if (!empty($_REQUEST["data"])) { $data = explode(",", $_REQUEST["data"]); } $data2 = array(); if (!empty($_REQUEST["data2"])) { $data2 = explode(",", $_REQUEST["data2"]); } $data3 = array(); if (!empty($_REQUEST["data3"])) { $data3 = explode(",", $_REQUEST["data3"]); } $keys = array(0); if (!empty($_REQUEST["keys"])) {
static function update($path, $data, $where, $vars, $mfolder) { if (empty($vars["id"])) { return ""; } if (!empty($data["filedata"])) { $source = $data["filedata"]; } else { $source = $vars["id"]; } if (!empty($vars["folder_source"])) { return self::_move_file($vars["id"], $vars["folder_source"], $path, $mfolder); } $drop = array("filedata", "folder", "lastmodified", "handler", "mfolder", "dsize"); $meta = sys_build_meta_str($data, array_diff(array_keys($data), $drop)); $content = "<?xml version='1.0' encoding='UTF-8'?>" . "<entry xmlns='http://www.w3.org/2005/Atom' xmlns:docs='http://schemas.google.com/docs/2007'>" . "<category scheme='http://schemas.google.com/g/2005#kind' term='http://schemas.google.com/docs/2007#document'/>" . "<title>" . q(modify::basename($source)) . "</title>" . "<docs:description>" . q($meta) . "</docs:description></entry>"; if (file_exists($source) and sys_strbegins($source, SIMPLE_CACHE . "/upload/")) { $url = "https://docs.google.com/feeds/upload/create-session/default/private/full/" . $vars["id"] . "?convert=false"; $header = "X-Upload-Content-Type: application/octet-stream\r\n"; $context = self::_get_context_action($mfolder, "PUT", $content, $header); $http_response_header = array(); $response = file_get_contents($url, false, $context); preg_match("/Location: (.+)/m", implode("\n", $http_response_header), $match); if (!strpos($http_response_header[0], "200") or empty($match[1])) { return "{t}Error{/t} [update] " . implode("\n", $http_response_header) . "\n" . $response; } $header = "PUT " . $match[1] . " HTTP/1.0\r\n"; $header .= "Host: docs.google.com\r\n"; $header .= "Content-Length: " . filesize($source) . "\r\n\r\n"; $errorNumber = 0; $errorString = ""; $fp = fsockopen("ssl://docs.google.com", "443", $errorNumber, $errorString, 5); $fin = fopen($source, "rb"); if (is_resource($fp) and is_resource($fin)) { fwrite($fp, $header); while (!feof($fin)) { fwrite($fp, fread($fin, 8192)); } $resp = ""; while (!feof($fp)) { $resp .= fread($fp, 8192); } fclose($fp); fclose($fin); if (!sys_strbegins($resp, "HTTP/1.0 200")) { return "{t}Error{/t} [update2] " . $resp; } } else { return "{t}Error{/t} [update3] " . $errorString . " " . $errorNumber; } } else { $url = "https://docs.google.com/feeds/default/private/full/" . $vars["id"] . "?convert=false"; $context = self::_get_context_action($mfolder, "PUT", $content); $http_response_header = array(); $response = file_get_contents($url, false, $context); if (!strpos($http_response_header[0], "200")) { return "{t}Error{/t} [update4] " . $http_response_header . "\n" . $response; } } sys_cache_remove("gdocs_xml_" . md5(serialize(sys_credentials($mfolder)) . $path)); return ""; }
static function install_footer() { self::out('<br><a href="index.php">{t}C O N T I N U E{/t}</a><br><finished>'); if (function_exists("memory_get_usage") and function_exists("memory_get_peak_usage")) { self::out("<!-- " . modify::filesize(memory_get_usage()) . " - " . modify::filesize(memory_get_peak_usage()) . " -->", false); } self::out('<div style="border-top: 1px solid #666666;">Powered by Simple Groupware, Copyright (C) 2002-2012 by Thomas Bley.</div></div></body></html>', false); }
private static function _drawheader($headers) { $content = "Subject: " . modify::decode_subject($headers["subject"]) . "\n"; $content .= "Date: " . $headers["date"] . "\n"; $content .= "From: " . modify::decode_subject($headers["from"]) . "\n"; $content .= "To: " . modify::decode_subject($headers["to"]) . "\n"; return $content; }
static function delete($folder) { $row = db_select_first("simple_sys_tree", array("id", "rgt", "lft", "ftitle", "parent"), "id=@id@", "", array("id" => $folder)); $rows = array(); if (!empty($row["id"])) { $rows = db_select("simple_sys_tree", array("id", "ftype"), "lft between @left@ and @right@", "lft asc", "", array("left" => $row["lft"], "right" => $row["rgt"])); } if (!is_array($rows) or count($rows) == 0) { return ""; } if (!folder_in_trash($folder)) { $trash = db_select_value("simple_sys_tree", "id", "anchor=@anchor@", array("anchor" => "trash")); if (empty($trash)) { exit("{t}Error{/t}: {t}Trash folder not found.{/t}"); } $id = self::create(sys_date("{t}m/d/Y{/t}"), "blank", "", $trash, true); $old_path = modify::getpath($folder); if (!self::move($row["id"], $id, true)) { exit("{t}The folder cannot be deleted.{/t}"); } $data = array("rread_users" => "", "rread_groups" => "", "rwrite_users" => "", "rwrite_groups" => "", "radmin_users" => "", "radmin_groups" => "", "rexception_users" => "", "rexception_groups" => "", "anchor" => ""); $data["history"] = sprintf("{t}Item deleted by %s at %s{/t}\n", $_SESSION["username"], sys_date("{t}m/d/y g:i:s a{/t}")); foreach ($rows as $folder) { db_update("simple_sys_tree", $data, array("id=@id@"), array("id" => $folder["id"])); } db_update("simple_sys_tree", array("history" => "{t}Origin{/t}: " . $old_path . "\n"), array("id=@id@"), array("id" => $rows[0]["id"])); sys_log_stat("deleted_folders", count($rows)); } else { foreach ($rows as $folder) { if ($folder["ftype"] != "sys_tree") { $schema_data = db_get_schema(sys_find_module($folder["ftype"])); $tname = $schema_data["att"]["NAME"]; if (!strpos($tname, "_nodb_")) { $delete_fields = array(); foreach ($schema_data["fields"] as $key => $field) { if ($field["SIMPLE_TYPE"] == "files") { $delete_fields[] = $key; } } if (count($delete_fields) > 0) { $data = db_select($tname, $delete_fields, "folder=@folder@", "created asc", "", array("folder" => $folder["id"])); if (is_array($data) and count($data) > 0) { foreach ($data as $ditem) { foreach ($delete_fields as $field) { $files = explode("|", $ditem[$field]); sys_unlink($files); } } } } db_delete($tname, array("folder=@folder@"), array("folder" => $folder["id"])); } } db_search_delete("simple_sys_tree", $folder["id"], $folder["id"]); db_search_delete_folder($folder["id"]); db_delete("simple_sys_tree", array("id=@id@"), array("id" => $folder["id"])); } db_update_subfolder_count($row["parent"]); } $folder = $row["id"]; if (isset($_SESSION["folder_states"][$folder])) { foreach ($_SESSION["folder_states"][$folder] as $child) { unset($_SESSION["folder_states"][$child]); } unset($_SESSION["folder_states"][$folder]); } return $row["parent"]; }
function output() { if ($this->pagename == "rss") { $this->_output_rss(); } if ($this->pagename == "sitemap") { $this->_output_sitemap(); } $this->template->cms = $this; $this->template->page = $this->page; $template = sys_custom("templates/cms/" . basename($this->page["template"])); if (!file_exists($template)) { $template = sys_custom("templates/cms/pmwiki.php"); } $output = $this->template->render($template); echo $output; if (self::$cache_file != "" and $output != "" and $this->page["staticcache"] == "1" and sys_is_guest($_SESSION["username"]) and strpos($this->page["rread_users"], "|anonymous|") !== false) { sys_mkdir(dirname(self::$cache_file)); file_put_contents(self::$cache_file, $output, LOCK_EX); if ($this->page["attachment"] == "") { return; } $files = explode("|", trim($this->page["attachment"], "|")); foreach ($files as $file) { copy($file, dirname(self::$cache_file) . "/" . modify::basename($file)); } } }
<a href="?console=sql" <?php echo $this->console == "sql" ? "class='bold'" : ""; ?> >SQL</a> - <a href="?console=php" <?php echo $this->console == "php" ? "class='bold'" : ""; ?> >PHP</a> - <a href="?console=sys" <?php echo $this->console == "sys" ? "class='bold'" : ""; ?> >SYS</a> </div> <form method="post" action="console.php"> <input type="hidden" name="token" value="<?php echo modify::get_form_token(); ?> "> <?php if ($this->console == "sql" and $this->auto_complete) { ?> <input type="hidden" id="database" value="<?php echo SETUP_DB_NAME; ?> " /> <textarea name="code" id="codebox" class="codebox" spellcheck="false"><?php q($this->code); ?> </textarea><br> <select size="2" id="selectbox" ondblclick="select_insert(obj('codebox'),obj(this.id));"></select> <?php
static function select($path, $fields, $where, $order, $limit, $vars, $mfolder) { $path = rtrim($path, "/"); $datas = sys_parse_csv($path); $rows = array(); $index = array_shift($datas); $i = 0; $map = array("subject" => "Subject", "description" => "Description", "location" => "Location", "category" => "Categories", "organizer" => "Meeting Organizer"); foreach ($datas as $data) { $i++; $row = array(); foreach ($fields as $field) { switch ($field) { case "id": $row[$field] = $path . "/?" . $i; break; case "folder": $row[$field] = $path; break; case "created": $row[$field] = 0; break; case "createdby": $row[$field] = ""; break; case "lastmodified": $row[$field] = 0; break; case "lastmodifiedby": $row[$field] = ""; break; case "searchcontent": $row[$field] = implode(" ", $data); break; case "begin": $key1 = array_search("Start Date", $index); $key2 = array_search("Start Time", $index); $row[$field] = modify::datetime_to_int($data[$key1] . " " . $data[$key2]); break; case "ending": $key1 = array_search("End Date", $index); $key2 = array_search("End Time", $index); $row[$field] = modify::datetime_to_int($data[$key1] . " " . $data[$key2]); $row["until"] = $row[$field]; break; case "duration": $row[$field] = $row["ending"] - $row["begin"]; break; case "priority": $key = array_search("Priority", $index); $row[$field] = strtolower($data[$key]); break; case "allday": $key = array_search("All day event", $index); $row[$field] = $data[$key] == "False" ? 0 : 1; break; case "participants_ext": $key = array_search("Required Attendees", $index); $row[$field] = $data[$key]; $key = array_search("Optional Attendees", $index); if ($row[$field] != "" and $data[$key] != "") { $row[$field] .= ", "; } $row[$field] .= $data[$key]; break; default: $row[$field] = ""; if (!isset($row[$field]) and in_array($field, $index)) { $key = array_search($field, $index); $row[$field] = $data[$key]; } else { if (isset($map[$field])) { $key = array_search($map[$field], $index); $row[$field] = $data[$key]; } } break; } } if (sys_select_where($row, $where, $vars)) { $rows[] = $row; } } $rows = sys_select($rows, $order, $limit, $fields); return $rows; }
function getStructurePart($ret, $return, $key_prefix, $level) { foreach ($ret as $key => $ret_elem) { if (is_array($ret_elem) and !is_array($ret_elem[0])) { if (strtolower($ret_elem[0]) == "boundary") { continue; } if (isset($ret_elem[2]) and !is_array($ret_elem[2]) and strtolower($ret_elem[2]) == "boundary") { continue; } $id = $key_prefix . ($key + 1); $type = "text/plain"; if (!empty($ret_elem[1]) and $ret_elem[1] != "NIL") { $type = strtolower($ret_elem[0] . "/" . $ret_elem[1]); } $name = str_replace(".", "_", $id) . "_" . strtolower($ret_elem[0]) . "." . str_replace("plain", "txt", strtolower($ret_elem[1])); if (!empty($ret_elem[3]) and $ret_elem[3] != "NIL") { $cid = trim($ret_elem[3], "<>"); } else { $cid = ""; } if (!empty($ret_elem[2][0]) and strtolower($ret_elem[2][0]) == "name") { $name = $ret_elem[2][1]; } if (isset($ret_elem[9]) and $ret_elem[8] == "NIL") { $ret_elem[8] = $ret_elem[9]; } if (!empty($ret_elem[8][0][0]) and strtolower($ret_elem[8][1][0]) == "filename") { $name = $ret_elem[8][1][1]; } if (!isset($ret_elem[6])) { continue; } $return[] = array("id" => $id, "level" => $level, "contenttype" => strtolower($type), "encoding" => strtolower($ret_elem[5]), "charset" => (!empty($ret_elem[2][0]) and strtolower($ret_elem[2][0]) == "charset") ? strtolower($ret_elem[2][1]) : "", "size" => $ret_elem[6], "name" => modify::decode_subject($name), "disposition" => (isset($ret_elem[8]) and is_array($ret_elem[8]) and !is_array($ret_elem[8][0])) ? $ret_elem[8][0] : "", "cid" => $cid); $last_id = count($return) - 1; if (strtolower($return[$last_id]["contenttype"]) == "text/calendar") { $return[$last_id]["disposition"] = "attachment"; if (empty($return[$last_id]["name"])) { $return[$last_id]["name"] = "appointment.ics"; } } if ($type == "message/rfc822" and is_array($ret_elem[8])) { $return[$last_id]["level"]++; if (!is_array($ret_elem[8][0])) { $ret_elem[8] = array($ret_elem[8]); } $return = $this->getStructurePart($ret_elem[8], $return, $id . ".", $level + 1); } } else { if (is_array($ret_elem)) { $id = $key_prefix . ($key + 1); $return = $this->getStructurePart($ret_elem, $return, $id . ".", $level); } } } return $return; }
/** * @package Simple Groupware * @link http://www.simple-groupware.de * @copyright Simple Groupware Solutions Thomas Bley 2002-2012 * @license GPLv2 */ define("MAIN_SCRIPT", basename(__FILE__)); error_reporting(E_ALL); @(include "simple_store/config.php"); if (!defined("SETUP_DB_HOST")) { exit; } require "core/functions.php"; set_error_handler("debug_handler"); if (ini_get("register_globals")) { modify::dropglobals(); } @ignore_user_abort(1); header("Content-Type: text/plain; charset=utf-8"); if (!defined("SETUP_DB_HOST") or !sql_connect(SETUP_DB_HOST, SETUP_DB_USER, sys_decrypt(SETUP_DB_PW, sha1(SETUP_ADMIN_USER)), SETUP_DB_NAME)) { exit(sql_error()); } @set_time_limit(180); $lock_file = SIMPLE_STORE . "/cron/lock_cron"; $_SESSION["username"] = "******"; $_SESSION["password"] = ""; $_SESSION["groups"] = array(); $_SESSION["permission_sql"] = "1=1"; $cron_conf = trigger::sendmail_getconn("cron", ""); if (empty($cron_conf["smtp"])) { $message = t("{t}Mail identities{/t}") . ": " . t("{t}SMTP not configured for %s{/t}", "cron");
static function form($folder, $required_fields) { setup::out_exit(' Folder: ' . q(modify::getpathfull($folder)) . '<br> <br> <a href="index.php?export=calc&limit=1&hide_fields=id&folder=' . q($folder) . '&view=details">{t}Download example file{/t} (.xls)</a> <br> {t}Required fields{/t}: ' . q(implode(", ", $required_fields)) . ' <br><br> {t}File{/t} (.xls):<br> <form method="post" action="import.php?" enctype="multipart/form-data"> <input type="hidden" name="token" value="' . modify::get_form_token() . '"> <input type="hidden" name="folder" value="' . q($folder) . '"> <input type="File" name="file[]" value="" multiple="true" required="true"> <input type="submit" value="{t}I m p o r t{/t}" class="submit"> <input type="submit" name="validate_only" value="{t}V a l i d a t e{/t}" class="submit"> </form> <br> <b>{t}Note{/t}:</b> {t}Assets can be imported into multiple folders by adding the "Folder" column.{/t}<br> <b>{t}Note{/t}:</b> {t}Assets can be overwritten by adding the "Id" column.{/t}<br> <br> <div style="border-top: 1px solid black;">Powered by Simple Groupware, Copyright (C) 2002-2012 by Thomas Bley.</div></div> </body> </html> '); }
static function show_form() { echo ' <form action="sysconfig.php" method="post"> <input type="hidden" value="' . modify::get_form_token() . '" name="token"> <table class="data"> '; foreach (self::$inputs as $key => $input) { if ($input == "---") { echo ' <tr> <td><div style="border-top:1px solid #cccccc; width:100%; margin:10px 0px;"></div></td> <td><div style="border-top:1px solid #cccccc; width:450px; margin:10px 0px;"></div></td> </tr> '; continue; } echo ' <tr> <td>' . $input[0] . ' ' . (isset($input[1]) ? '<a href="#" onclick="alert(\'' . str_replace("\n", "\\n", $input[1]) . '\'); return false;">?</a>' : '') . '</td> <td> '; if ($key == "setup_db_pw") { echo '<input type="password" size="60" maxlength="255" id="' . $key . '" name="' . $key . '" value="' . self::quote(sys_decrypt(SETUP_DB_PW, sha1(SETUP_ADMIN_USER))) . '"><br/>'; echo '<input id="' . $key . '_check" type="checkbox" onclick="document.getElementById(\'' . $key . '\').type = this.checked ? \'text\':\'password\';"><label for="' . $key . '_check">{t}Show password{/t}</label>'; } else { if ($key == "setup_admin_pw" or $key == "setup_admin_pw2") { echo '<input type="password" size="60" maxlength="255" id="' . $key . '" name="' . $key . '" value=""><br/>'; echo '<input id="' . $key . '_check" type="checkbox" onclick="document.getElementById(\'' . $key . '\').type = this.checked ? \'text\':\'password\';"><label for="' . $key . '_check">{t}Show password{/t}</label>'; } else { echo '<input type="text" size="60" maxlength="255" name="' . $key . '" value="' . self::quote(constant(strtoupper($key))) . '">'; } } echo ' </td> </tr> '; } echo ' <tr> <td>{t}Database{/t}</td> <td>' . self::quote(SETUP_DB_TYPE) . '</td> </tr> <tr> <td><div style="border-top:1px solid #cccccc; width:100%; margin:10px 0px;"></div></td> <td><div style="border-top:1px solid #cccccc; width:450px; margin:10px 0px;"></div></td> </tr> <tr> <td nowrap valign="top">{t}Authentication Mode{/t}</td> <td> <table class="data" style="background-color: #FFFFFF; border: 0px; margin: 0px;"> '; foreach (self::$auths as $key => $auth) { echo ' <tr> <td><input type="Radio" class="radio" name="setup_auth" value="' . $key . '" ' . (SETUP_AUTH == $key ? "checked" : "") . '></td> '; if (!$auth[1]) { echo '<td colspan="2">' . $auth[0] . '</td>'; echo '</tr>'; } else { if ($key == "gdata") { echo ' <td>' . $auth[0] . '</td> <td>{t}Domain{/t}</td><td><input type="Text" name="setup_auth_domain_gdata" value="' . self::quote(SETUP_AUTH_DOMAIN_GDATA) . '"></td><td></td> </tr>'; } else { echo ' <td>' . $auth[0] . '</td> <td>{t}Host{/t}</td><td><input type="Text" name="setup_auth_hostname_' . $key . '" value="' . self::quote(constant("SETUP_AUTH_HOSTNAME_" . strtoupper($key))) . '"></td><td>' . $auth[2] . '</td> </tr>'; } if ($key == "imap") { echo ' <tr><td colspan="2"></td> <td>{t}Domain{/t}</td><td><input type="Text" name="setup_auth_domain_imap" value="' . self::quote(SETUP_AUTH_DOMAIN_IMAP) . '"></td><td></td> </tr>'; } if ($key == "ldap") { echo '<tr><td colspan="2"></td><td>{t}Domain{/t}</td><td><input type="Text" name="setup_auth_domain" value="' . self::quote(SETUP_AUTH_DOMAIN) . '"></td><td>(Active Directory)</td></tr>'; echo '<tr><td colspan="2"></td><td>Base DN</td><td><input type="Text" name="setup_auth_base_dn" value="' . self::quote(SETUP_AUTH_BASE_DN) . '"></td><td>({t}if not autodetected with namingContexts{/t})</td></tr>'; echo '<tr><td colspan="2"></td><td>User DN</td><td><input type="Text" name="setup_auth_ldap_user" value="' . self::quote(SETUP_AUTH_LDAP_USER) . '"></td><td>({t}LDAP without anonymous access{/t})</td></tr>'; echo '<tr><td colspan="2"></td><td>{t}Password{/t}</td><td><input type="Text" name="setup_auth_ldap_pw" value="' . self::quote(SETUP_AUTH_LDAP_PW) . '"></td><td>({t}LDAP without anonymous access{/t})</td></tr>'; echo '<tr><td colspan="2"></td><td>UID</td><td><input type="Text" name="setup_auth_ldap_uid" value="' . self::quote(SETUP_AUTH_LDAP_UID) . '"></td><td>({t}LDAP attribute for usernames{/t}, {t}e.g.{/t} uid,cn)</td></tr>'; echo '<tr><td colspan="2"></td><td>{t}Rooms{/t}</td><td><input type="Text" name="setup_auth_ldap_room" value="' . self::quote(SETUP_AUTH_LDAP_ROOM) . '"></td><td>({t}LDAP attribute for rooms{/t})</td></tr>'; echo '<tr><td colspan="2"></td><td>MemberOf</td><td><input type="Text" name="setup_auth_ldap_memberof" value="' . self::quote(SETUP_AUTH_LDAP_MEMBEROF) . '"></td><td>({t}LDAP attribute for group memberships{/t})</td></tr>'; echo '<tr><td colspan="2"></td><td>{t}Use LDAP Groups{/t}</td><td><input type="Checkbox" name="setup_auth_ldap_groups" class="checkbox" value="1" ' . (SETUP_AUTH_LDAP_GROUPS ? "checked" : "") . '></td></tr>'; } if ($key == "ntlm") { echo '<tr><td colspan="2"></td><td>{t}Share{/t}</td><td><input type="Text" name="setup_auth_ntlm_share" value="' . self::quote(SETUP_AUTH_NTLM_SHARE) . '"></td><td>(smb://server/share/)</td></tr>'; } } } echo ' </table> </td> </tr> <tr> <td><div style="border-top:1px solid #cccccc; width:100%; margin:10px 0px;"></div></td> <td><div style="border-top:1px solid #cccccc; width:450px; margin:10px 0px;"></div></td> </tr> '; foreach (self::$selects as $key => $val) { echo ' <tr> <td>' . $val[0] . '</td> <td><select name="' . $key . '"> '; foreach ($val[1] as $key2 => $val2) { echo '<option value="' . $key2 . '" ' . (constant(strtoupper($key)) == $key2 ? "selected" : "") . '> ' . $val2; } echo ' </select> </tr> '; } foreach (self::$multi_selects as $key => $val) { echo ' <tr> <td>' . $val[0] . '</td> <td> <table class="data"><tr><td> <input type="hidden" name="' . $key . '[]" value=""/> '; $i = 0; foreach ($val[1] as $key2 => $val2) { if ($val2[0] == " ") { continue; } $checked = in_array($key2, explode("|", constant(strtoupper($key)))) ? "checked" : ""; echo '<input type="checkbox" name="' . $key . '[]" value="' . $key2 . '" ' . $checked . '> ' . $val2 . '<br>'; $i++; if ($i % 13 == 0) { echo '</td><td> </td><td valign="top">'; } } echo ' </td></tr></table> </td> </tr> '; } foreach (self::$textareas as $key => $input) { echo ' <tr> <td>' . $input[0] . '</td> <td><textarea name="' . $key . '" style="width:450px; height:100px;">' . self::quote(constant(strtoupper($key))) . '</textarea></td> </tr> '; } echo ' <tr> <td><div style="border-top:1px solid #cccccc; width:100%; margin:10px 0px;"></div></td> <td><div style="border-top:1px solid #cccccc; width:450px; margin:10px 0px;"></div></td> </tr> '; foreach (self::$bools as $key => $val) { echo ' <input type="hidden" name="' . strtolower($key) . '" value=""> <tr> <td style="width:26%;">' . ($val ? $val : $key) . '</td> <td><input type="Checkbox" class="checkbox" name="' . strtolower($key) . '" value="1" ' . (constant($key) ? "checked" : "") . '></td> </tr> '; } echo ' <tr> <td><div style="border-top:1px solid #cccccc; width:100%; margin:10px 0px;"></div></td> <td><div style="border-top:1px solid #cccccc; width:450px; margin:10px 0px;"></div></td> </tr> '; foreach (self::$caches as $key => $val) { echo ' <tr> <td>' . ($val ? $val : $key) . '</td> <td><input type="Text" size="15" maxlength="50" name="' . strtolower($key) . '" value="' . self::quote(constant($key)) . '"></td> </tr> '; } echo ' </table> <div style="border-bottom: 1px solid black;"> </div> <br> <input type="submit" value=" {t}S a v e{/t} " class="submit"><br> </form> '; }
static function datetime($var) { if (strtotime(modify::date_translate($var)) != 0) { return ""; } return "{t}Variable must be of type datetime (mm/dd/yyyy hh:mm am/pm).{/t}"; }
static function build_history($type, $value, $data_old) { if ($value == "0" and in_array($type, array("folder", "date", "datetime", "time"))) { return ""; } switch ($type) { case "folder": $value = modify::getpathfull($value, false, "/") . " ([/" . $value . "])"; break; case "password": $value = ""; break; case "date": $value = sys_date("{t}m/d/Y{/t}", $value); break; case "datetime": $value = sys_date("{t}m/d/Y g:i a{/t}", $value); break; case "time": $value = sys_date("{t}g:i a{/t}", $value); break; case "dateselect": $data = array(); foreach (explode("|", trim($value, "|")) as $date) { $data[] = sys_date("{t}m/d/Y{/t}", $date); } $value = implode(", ", $data); break; case "files": $new = explode("|", trim($value, "|")); $old = explode("|", trim($data_old, "|")); $value = array(""); foreach ($new as $file) { if ($file != "" and !in_array($file, $old)) { $value[] = "+ " . modify::basename($file); } } foreach ($old as $file) { if ($file != "" and !in_array($file, $new)) { $value[] = "- " . modify::basename($file); } } $value = rtrim(implode("\n ", $value)); break; case "select": $value = str_replace("|", ", ", trim($value, "|")); break; case "checkbox": $value = $value ? "{t}yes{/t}" : "{t}no{/t}"; break; case "textarea": $value = self::build_diff($data_old, $value); break; default: if (is_call_type($type)) { $value = call_type($type, "build_history", $data_old, $value); } break; } return $value; }
<td id="wikibody" valign="top"> <p style="text-align: right; font-size:83%;">- <a target="_blank" href="?edit" accesskey="e">{t}Edit{/t}</a> -</p> <h1 class="pagetitle"><?php echo q($this->page["title"] ? $this->page["title"] : $this->page["name"]); ?> </h1> <div id="wikitext"><?php echo $this->cms->render($this->page["pagename"]); ?> </div> </td> </tr></table> <div id="wikifoot"> <div class="footnav"> <span style="float:right;">{t}Page last modified on{/t} <?php echo modify::localdateformat($this->page["lastmodified"], "{t}F j, Y{/t}"); ?> </span> <?php if (!sys_is_guest($_SESSION["username"])) { ?> <a href="?logout" accesskey="l">{t}Logout{/t}</a> - <?php } ?> <a href="<?php echo SELF; ?> /rss">{t}Recent changes{/t}</a> - <a href="?source">{t}Source{/t}</a> </div> </div>
static function folder_get_category($type, $folder, $folders) { $where = array("ftype=@type@", "id!=@id@", $_SESSION["permission_sql_read"]); $vars = array("type" => $type, "id" => $folder); $rows = db_select("simple_sys_tree", "id", $where, "lft asc", "200", $vars); if (is_array($rows) and count($rows) > 0) { foreach ($rows as $key => $row) { $rows[$key]["path"] = modify::getpath($row["id"]); } } $tpl = new template(); $tpl->items = $rows; $tpl->folder = $folder; $tpl->folders = $folders; $tpl->style = $_SESSION["theme"]; return $tpl->render("templates/ajax_folder_categories.php"); }