Exemple #1
0
 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);
    }
Exemple #8
0
 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();
 }
Exemple #9
0
 /**
  * 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>&nbsp; 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>&nbsp; " . $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;'>&nbsp;<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>');
 }
Exemple #11
0
 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;
 }
Exemple #12
0
 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;
 }
Exemple #14
0
 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 "";
 }
Exemple #15
0
$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"])) {
Exemple #16
0
 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 "";
 }
Exemple #17
0
 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);
 }
Exemple #18
0
 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"];
 }
Exemple #20
0
 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;
 }
Exemple #23
0
 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;
 }
Exemple #24
0
/**
 * @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");
Exemple #25
0
    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>&nbsp; &nbsp;</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;">&nbsp;</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}";
 }
Exemple #28
0
 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;
 }
Exemple #29
0
    <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}");
?>
&nbsp;</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>
Exemple #30
0
 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");
 }