X-Git-Url: https://delta.frontaccounting.com/gitweb/?a=blobdiff_plain;f=admin%2Fdb%2Fmaintenance_db.inc;h=225d57f7827be4bc593e8494d3b9bb8fb1d90ef2;hb=9dab04be9d81766f1878d3688ee73d0bcf29f5d2;hp=3df97cda089e7c962687f8fa1a95e4733cbe337d;hpb=d424105541040a975f03001cc051f1ec63797606;p=fa-stable.git diff --git a/admin/db/maintenance_db.inc b/admin/db/maintenance_db.inc index 3df97cda..225d57f7 100644 --- a/admin/db/maintenance_db.inc +++ b/admin/db/maintenance_db.inc @@ -21,7 +21,7 @@ function array_natsort($aryData, $strIndex, $strSortBy, $strSortType=false) { // if the parameters are invalid - if (!is_array($aryData) || !$strIndex || !$strSortBy) + if (!is_array($aryData) || !$strSortBy) // return the array return $aryData; @@ -29,9 +29,9 @@ function array_natsort($aryData, $strIndex, $strSortBy, $strSortType=false) $arySort = $aryResult = array(); // loop through the array - foreach ($aryData as $aryRow) + foreach ($aryData as $key => $aryRow) // set up the value in the array - $arySort[$aryRow[$strIndex]] = $aryRow[$strSortBy]; + $arySort[$strIndex ? $aryRow[$strIndex] : $key] = $aryRow[$strSortBy]; // apply the natural sort natsort($arySort); @@ -42,22 +42,30 @@ function array_natsort($aryData, $strIndex, $strSortBy, $strSortType=false) arsort($arySort); // loop through the sorted and original data - foreach ($arySort as $arySortKey => $arySorted) - foreach ($aryData as $aryOriginal) - // if the key matches - if ($aryOriginal[$strIndex]==$arySortKey) - // add it to the output array - array_push($aryResult, $aryOriginal); - + foreach ($arySort as $arySortKey => $arySorted) + if($strIndex) + { + foreach ($aryData as $aryOriginal) + // if the key matches + if ($aryOriginal[$strIndex]==$arySortKey) + // add it to the output array + array_push($aryResult, $aryOriginal); + } else + $aryResult[$arySortKey] = $aryData[$arySortKey]; // return the return return $aryResult; } +function update_admin_password($conn, $password) +{ + $sql = "UPDATE ".$conn['tbpref']."users SET password=".db_escape($password) . " + WHERE user_id='admin'"; + db_query($sql, "could not update user password for 'admin'"); +} function write_config_db($new = false) { global $path_to_root, $def_coy, $db_connections, $tb_pref_counter; - include_once($path_to_root . "/config_db.php"); if ($new) $tb_pref_counter++; @@ -96,7 +104,7 @@ function write_config_db($new = false) $filename = $path_to_root . "/config_db.php"; // Check if the file exists and is writable first. - if (file_exists($filename) && is_writable($filename)) + if (!file_exists($filename) || (is_writable($path_to_root) && is_writable($filename))) { if (!$zp = fopen($filename, 'w')) { @@ -120,24 +128,25 @@ function write_config_db($new = false) return 0; } -function write_extensions($extensions=null, $company = null) +function write_extensions($extensions=null, $company = -1) { - global $path_to_root, $installed_extensions; + global $path_to_root, $installed_extensions, $next_extension_id; if (!isset($extensions)) { $extensions = $installed_extensions; } - - $exts = array_natsort($extensions, 'name', 'name'); - $extensions = $exts; - - $n = count($exts); + if (!isset($next_extension_id)) { + $next_extension_id = 1; + } +// $exts = array_natsort($extensions, 'name', 'name'); +// $extensions = $exts; $msg = " '); +"/* List of installed additional modules and plugins. If adding extensions manually + to the list make sure they have unique, so far not used extension_ids as a keys, + and \$next_extension_id is also updated. 'name' - name for identification purposes; 'type' - type of extension: 'module' or 'plugin' @@ -147,8 +156,10 @@ function write_extensions($extensions=null, $company = null) 'title' - is the menu text (for plugin) or new tab name 'active' - current status of extension 'acc_file' - (optional) file name with \$security_areas/\$security_sections extensions; - related to 'path'. -*/\n\n"; + related to 'path' + 'access' - security area code in string form +*/ +\n\$next_extension_id = $next_extension_id; // unique id for next installed extension\n\n"; else $msg .= "/* @@ -157,15 +168,12 @@ function write_extensions($extensions=null, $company = null) */\n\n"; $msg .= "\$installed_extensions = array (\n"; - if ($n > 0) - $msg .= "\t0 => "; - for ($i = 0; $i < $n; $i++) + foreach($extensions as $i => $ext) { - if ($i > 0) - $msg .= "\t\t"; + $msg .= "\t$i => "; $msg .= "array ( "; $t = ''; - foreach($extensions[$i] as $key => $val) { + foreach($ext as $key => $val) { $msg .= $t."'$key' => '$val',\n"; $t = "\t\t\t"; } @@ -173,7 +181,7 @@ function write_extensions($extensions=null, $company = null) } $msg .= "\t);\n?>"; - $filename = $path_to_root . (isset($company) ? '/company/'.$company : '') + $filename = $path_to_root . ($company==-1 ? '' : '/company/'.$company) .'/installed_extensions.php'; // Check if the file is writable first. @@ -198,6 +206,73 @@ function write_extensions($extensions=null, $company = null) return true; } +function write_lang() +{ + global $path_to_root, $installed_languages, $dflt_lang; + + $conn = array_natsort($installed_languages, 'code', 'code'); + $installed_languages = $conn; + //reset($installed_languages); + $n = count($installed_languages); + $msg = " ')\n"; + $msg .= "-- 'code' should match the name of the directory for the language under \\lang\n"; + $msg .= "-- 'name' is the name that will be displayed in the language selection list (in Users and Display Setup)\n"; + $msg .= "-- 'rtl' only needs to be set for right-to-left languages like Arabic and Hebrew\n\n"; + $msg .= "*/\n\n\n"; + + $msg .= "\$installed_languages = array (\n"; + if ($n > 0) + $msg .= "\t0 => "; + for ($i = 0; $i < $n; $i++) + { + if ($i > 0) + $msg .= "\t\tarray "; + else + $msg .= "array "; + $msg .= "('code' => '" . $installed_languages[$i]['code'] . "', "; + $msg .= "'name' => '" . $installed_languages[$i]['name'] . "', "; + $msg .= "'encoding' => '" . $installed_languages[$i]['encoding'] . "'"; + if (isset($installed_languages[$i]['rtl']) && $installed_languages[$i]['rtl']) + $msg .= ", 'rtl' => true),\n"; + else + $msg .= "),\n"; + } + + $msg .= "\t);\n"; + $msg .= "\n\$dflt_lang = '$dflt_lang';\n?>\n"; + + $path = $path_to_root . "/lang"; + $filename = $path.'/installed_languages.inc'; + // Check if directory exists and is writable first. + if (file_exists($path) && is_writable($path)) + { + if (!$zp = fopen($filename, 'w')) + { + display_error(_("Cannot open the languages file - ") . $filename); + return false; + } + else + { + if (!fwrite($zp, $msg)) + { + display_error(_("Cannot write to the language file - ") . $filename); + fclose($zp); + return false; + } + // Close file + fclose($zp); + } + } + else + { + display_error(_("The language files folder ") . $path . _(" is not writable. Change its permissions so it is, then re-run the operation.")); + return false; + } + return true; +} function db_create_db($connection) { @@ -459,7 +534,7 @@ function db_export($conn, $filename, $zip='no', $comment='', $tbpref = TB_PREF) $out.="# Backup Date and Time: ".date("Y-m-d H:i")."\n"; $out.="# Built by " . $app_title . " " . $version ."\n"; $out.="# ".$power_url."\n"; - $out.="# Company: ". @html_entity_decode($company, ENT_COMPAT, $_SESSION['language']->encoding)."\n"; + $out.="# Company: ". @html_entity_decode($company, ENT_QUOTES, $_SESSION['language']->encoding)."\n"; $out.="# User: ".$_SESSION["wa_current_user"]->name."\n\n"; // write users comment @@ -542,11 +617,11 @@ function db_export($conn, $filename, $zip='no', $comment='', $tbpref = TB_PREF) // check if field types are NULL or NOT NULL $res3 = db_query("SHOW COLUMNS FROM `" . $tablename . "`"); - $field_type = array(); + $field_null = array(); for ($j = 0; $j < db_num_rows($res3); $j++) { $row3 = db_fetch($res3); - $field_type[] = $row3[2]; + $field_null[] = $row3[2]=='YES' && $row3[4]===null; } $res2 = db_query("SELECT * FROM `" . $tablename . "`"); @@ -557,7 +632,7 @@ function db_export($conn, $filename, $zip='no', $comment='', $tbpref = TB_PREF) // run through each field for ($k = 0; $k < $nf = db_num_fields($res2); $k++) { - $out .= db_escape(@html_entity_decode($row2[$k], ENT_COMPAT, $_SESSION['language']->encoding)); + $out .= db_escape($row2[$k], $field_null[$k]); if ($k < ($nf - 1)) $out .= ", "; }