From 93c18e9ae3644112415da787d87ad27ca045d393 Mon Sep 17 00:00:00 2001 From: Jan-Christoph Borchardt Date: Sat, 22 Oct 2011 11:32:38 +0200 Subject: [PATCH 01/21] added all logo source SVGs --- core/img/logo-inverted.svg | 891 +++++++++++++++++++++++++++++++++++++ core/img/logo-square.png | Bin 0 -> 22792 bytes core/img/logo.svg | 890 ++++++++++++++++++++++++++++++++++++ 3 files changed, 1781 insertions(+) create mode 100644 core/img/logo-inverted.svg create mode 100644 core/img/logo-square.png create mode 100644 core/img/logo.svg diff --git a/core/img/logo-inverted.svg b/core/img/logo-inverted.svg new file mode 100644 index 0000000000..427531bc7a --- /dev/null +++ b/core/img/logo-inverted.svg @@ -0,0 +1,891 @@ + + + +image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/core/img/logo-square.png b/core/img/logo-square.png new file mode 100644 index 0000000000000000000000000000000000000000..086d415db6dc9555b237d08f13431ebaab2b472d GIT binary patch literal 22792 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ℑ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 jiN9#I{^dBm>iYotJm2Xk + + +image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file From c28504decab9319b73a933748d015298564f0402 Mon Sep 17 00:00:00 2001 From: Jan-Christoph Borchardt Date: Sun, 23 Oct 2011 10:44:05 +0200 Subject: [PATCH 02/21] textfield is now less obtrusive / opaque --- core/css/styles.css | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/core/css/styles.css b/core/css/styles.css index ea09a1f363..799e238f8b 100644 --- a/core/css/styles.css +++ b/core/css/styles.css @@ -34,8 +34,10 @@ filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#35537a', end input[type="text"], input[type="password"] { cursor:text; } input, select, .button, #quota, div.jp-progress, .pager li a { font-size:1em; width:10em; margin:.3em; padding:.6em .5em .4em; background:#fff; color:#333; border:1px solid #ddd; -moz-box-shadow:0 1px 1px #fff, 0 2px 0 #bbb inset; -webkit-box-shadow:0 1px 1px #fff, 0 1px 0 #bbb inset; box-shadow:0 1px 1px #fff, 0 1px 0 #bbb inset; -moz-border-radius:.5em; -webkit-border-radius:.5em; border-radius:.5em; outline:none; } input[type="text"], input[type="password"], input[type="search"] { background:#f8f8f8; color:#555; cursor:text; } -input[type="text"], input[type="password"], input[type="search"] { -webkit-appearance:textfield; -webkit-box-sizing:content-box; } -input[type="text"]:hover, input[type="text"]:focus, input[type="password"]:hover, input[type="password"]:focus, input[type="search"]:hover, input[type="search"]:focus { background:#fff; color:#333; } +input[type="text"], input[type="password"], input[type="search"] { -webkit-appearance:textfield; -moz-appearance:textfield; -webkit-box-sizing:content-box; -moz-box-sizing:content-box; box-sizing:content-box; } +input[type="text"]:hover, input[type="text"]:focus, input[type="text"]:active, +input[type="password"]:hover, input[type="password"]:focus, input[type="password"]:active, +.searchbox input[type="search"]:hover, .searchbox input[type="search"]:focus, .searchbox input[type="search"]:active { background-color:#fff; color:#333; opacity:1; } input[type="submit"], input[type="button"], .button, #quota, div.jp-progress, .pager li a { width:auto; padding:.4em; border:1px solid #ddd; font-weight:bold; cursor:pointer; background:#f8f8f8; color:#555; text-shadow:#fff 0 1px 0; -moz-box-shadow:0 1px 1px #fff, 0 1px 1px #fff inset; -webkit-box-shadow:0 1px 1px #fff, 0 1px 1px #fff inset; -moz-border-radius:.5em; -webkit-border-radius:.5em; border-radius:.5em; } input[type="submit"]:hover, input[type="submit"]:focus, input[type="button"]:hover, input[type="button"]:focus, .button:hover { background:#fff; color:#333; } @@ -46,7 +48,7 @@ input[type="checkbox"] { width:auto; } #body-login input[type="text"], #body-login input[type="password"] { width: 13em; } #body-login input.login { width: auto; float: right; } #remember_login { margin:.8em .2em 0 1em; } -form.searchbox input[type="search"] { position:fixed; font-size:1.2em; top:.4em; right:3em; padding:.2em .5em .2em 1.5em; background-image:url('../img/actions/search.svg'); background-repeat:no-repeat; background-position:.5em center; border:0; -moz-border-radius:1em; -webkit-border-radius:1em; border-radius:1em; } +.searchbox input[type="search"] { position:fixed; font-size:1.2em; top:.4em; right:3em; padding:.2em .5em .2em 1.5em; background:#fff url('../img/actions/search.svg') no-repeat .5em center; border:0; -moz-border-radius:1em; -webkit-border-radius:1em; border-radius:1em; opacity:.3; -webkit-transition:opacity 300ms; -moz-transition:opacity 300ms; -o-transition:opacity 300ms; transition:opacity 300ms; } input[type="submit"].enabled { background:#66f866; border:1px solid #5e5; -moz-box-shadow:0 1px 1px #f8f8f8, 0 1px 1px #cfc inset; -webkit-box-shadow:0 1px 1px #f8f8f8, 0 1px 1px #cfc inset; box-shadow:0 1px 1px #f8f8f8, 0 1px 1px #cfc inset; } input[type="submit"].highlight{ background:#ffc100; border:1px solid #db0; text-shadow:#ffeedd 0 1px 0; -moz-box-shadow:0 1px 1px #f8f8f8, 0 1px 1px #ffeedd inset; -webkit-box-shadow:0 1px 1px #f8f8f8, 0 1px 1px #ffeedd inset; box-shadow:0 1px 1px #f8f8f8, 0 1px 1px #ffeedd inset; } From 4140a75a5e2124dd81f362881cd2c5d2b9a26b9a Mon Sep 17 00:00:00 2001 From: Jan-Christoph Borchardt Date: Sun, 23 Oct 2011 10:48:42 +0200 Subject: [PATCH 03/21] corrected position of in-field labels a bit --- core/css/styles.css | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core/css/styles.css b/core/css/styles.css index 799e238f8b..0f591859f3 100644 --- a/core/css/styles.css +++ b/core/css/styles.css @@ -72,14 +72,14 @@ input[type="submit"].highlight{ background:#ffc100; border:1px solid #db0; text- #login form { width:22em; margin:2em auto 2em; padding:0; } #login form fieldset { background:0; border:0; margin-bottom:2em; padding:0; } #login form fieldset legend { font-weight:bold; } -#login form label { margin:.9em .8em .7em;; color:#666; } +#login form label { margin:.95em 0 0 .85em; color:#666; } /* NEEDED FOR INFIELD LABELS */ p.infield { position: relative; } label.infield { cursor: text !important; } #login form label.infield { position:absolute; font-size:1.5em; color:#AAA; } #login #dbhostlabel, #login #directorylabel { display:block; margin:.95em 0 .8em -8em; } #login form input[type="checkbox"]+label { position:relative; margin:0; font-size:1em; text-shadow:#fff 0 1px 0; } -#login form ul.errors { background:#fed7d7; border:1px solid #f00; list-style-indent:inside; margin:0 0 2em; padding:1em; } +#login form .errors { background:#fed7d7; border:1px solid #f00; list-style-indent:inside; margin:0 0 2em; padding:1em; } #login form #selectDbType { text-align:center; } #login form #selectDbType label { position:static; font-size:1em; margin:0 -.3em 1em; cursor:pointer; padding:.4em; border:1px solid #ddd; font-weight:bold; background:#f8f8f8; color:#555; text-shadow:#eee 0 1px 0; -moz-box-shadow:0 1px 1px #fff, 0 1px 1px #fff inset; -webkit-box-shadow:0 1px 1px #fff, 0 1px 1px #fff inset; } From 6592fbb948153e17dc90d1e167060a1d5c5bbe40 Mon Sep 17 00:00:00 2001 From: Robin Appelman Date: Sun, 23 Oct 2011 12:29:12 +0200 Subject: [PATCH 04/21] improve detection of database backend --- lib/db.php | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/lib/db.php b/lib/db.php index 44be619fde..58479bacfb 100644 --- a/lib/db.php +++ b/lib/db.php @@ -42,11 +42,22 @@ class OC_DB { * * Connects to the database as specified in config.php */ - public static function connect(){ + public static function connect($backend=null){ if(self::$connection){ return; } - if(class_exists('PDO') && OC_Config::getValue('installed', false)){//check if we can use PDO, else use MDB2 (instalation always needs to be done my mdb2) + if(is_null($backend)){ + $backend=self::BACKEND_MDB2; + if(class_exists('PDO') && OC_Config::getValue('installed', false)){//check if we can use PDO, else use MDB2 (instalation always needs to be done my mdb2) + $type = OC_Config::getValue( "dbtype", "sqlite" ); + if($type=='sqlite3') $type='sqlite'; + $drivers=PDO::getAvailableDrivers(); + if(array_search($type,$drivers)!==false){ + $backend=self::BACKEND_PDO; + } + } + } + if($backend==self::BACKEND_PDO){ self::connectPDO(); self::$connection=self::$PDO; self::$backend=self::BACKEND_PDO; From 8d203531fbe9a6748c66c63aab1076898e785702 Mon Sep 17 00:00:00 2001 From: Jan-Christoph Borchardt Date: Sun, 23 Oct 2011 12:09:52 +0200 Subject: [PATCH 05/21] corrected link for app dev instructions --- settings/templates/apps.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/settings/templates/apps.php b/settings/templates/apps.php index 6f16152bc5..27133e9e67 100644 --- a/settings/templates/apps.php +++ b/settings/templates/apps.php @@ -5,7 +5,7 @@ */?>
    From f073041b0be22947d9790f46dd0d61b9695a3ae9 Mon Sep 17 00:00:00 2001 From: Robin Appelman Date: Sun, 23 Oct 2011 15:25:38 +0200 Subject: [PATCH 06/21] provide function for updating the database scheme --- lib/db.php | 37 +++++++++++++++++++++++++++++++++++-- 1 file changed, 35 insertions(+), 2 deletions(-) diff --git a/lib/db.php b/lib/db.php index 58479bacfb..421b08c232 100644 --- a/lib/db.php +++ b/lib/db.php @@ -263,7 +263,7 @@ class OC_DB { * * TODO: write more documentation */ - public static function getDbStructure( $file ){ + public static function getDbStructure( $file ,$mode=MDB2_SCHEMA_DUMP_STRUCTURE){ self::connectScheme(); // write the scheme @@ -299,7 +299,7 @@ class OC_DB { $file2 = tempnam( get_temp_dir(), 'oc_db_scheme_' ); $content = str_replace( '*dbname*', $CONFIG_DBNAME, $content ); $content = str_replace( '*dbprefix*', $CONFIG_DBTABLEPREFIX, $content ); - if( $CONFIG_DBTYPE == 'pgsql' ){ //mysql support it too but sqlite don't + if( $CONFIG_DBTYPE == 'pgsql' ){ //mysql support it too but sqlite doesn't $content = str_replace( '0000-00-00 00:00:00', 'CURRENT_TIMESTAMP', $content ); } file_put_contents( $file2, $content ); @@ -326,6 +326,39 @@ class OC_DB { return true; } + + /** + * @brief update the database scheme + * @param $file file to read structure from + */ + public static function updateDbFromStructure($file){ + $CONFIG_DBNAME = OC_Config::getValue( "dbname", "owncloud" ); + $CONFIG_DBTABLEPREFIX = OC_Config::getValue( "dbtableprefix", "oc_" ); + $CONFIG_DBTYPE = OC_Config::getValue( "dbtype", "sqlite" ); + + self::connectScheme(); + + // read file + $content = file_get_contents( $file ); + + // Make changes and save them to a temporary file + $file2 = tempnam( get_temp_dir(), 'oc_db_scheme_' ); + $content = str_replace( '*dbname*', $CONFIG_DBNAME, $content ); + $content = str_replace( '*dbprefix*', $CONFIG_DBTABLEPREFIX, $content ); + if( $CONFIG_DBTYPE == 'pgsql' ){ //mysql support it too but sqlite doesn't + $content = str_replace( '0000-00-00 00:00:00', 'CURRENT_TIMESTAMP', $content ); + } + file_put_contents( $file2, $content ); + $previousSchema = self::$schema->getDefinitionFromDatabase(); + $op = $schema->updateDatabase($file2, $previousSchema, array(), false); + + if (PEAR::isError($op)) { + $error = $op->getMessage(); + OC_Log::write('core','Failed to update database structure ('.$error.')',OC_Log::FATAL); + return false; + } + return true; + } /** * @brief connects to a MDB2 database scheme From abf33d32b9987cc22cd42e6d65ac13720c7f1c7c Mon Sep 17 00:00:00 2001 From: Jan-Christoph Borchardt Date: Sun, 23 Oct 2011 21:53:00 +0200 Subject: [PATCH 07/21] use existing correct info icons --- core/img/actions/info.png | Bin 483 -> 474 bytes core/img/actions/info.svg | 1809 +++++++++++++++++++++++++++++++++++-- 2 files changed, 1732 insertions(+), 77 deletions(-) diff --git a/core/img/actions/info.png b/core/img/actions/info.png index f27c73d6d13cdc068fe3ea3d312b6c24ffb38ace..2257d144d11ad33a429bead6bc1fde7222e66aae 100644 GIT binary patch delta 373 zcmV-*0gC?P1KI3RHXuT1NGTz1QFsB15(6D9lq?c( zv*6$m2XW4yads5Rf5_4y2zfY(5GqQxT12Zu35C?fNt4LC>$&H<=fb^0nx<%~!C-Jy zmgSi!idRXJ-2K+2MmGRT>4l;w`=)880Qdo67%t}XdG7oE^M7i!`lAc~t>8G03%~#n zGseES6Lh=X$D$~n;yC_e1_07z_I>|QlB8>0*TcG=$^_%_SXnNYm%6T>7>2Q>Y1&2| zpfZ6h%jZ!PiKEeIv(;*emSuf#0kSN68xDuJd7hVq5cGPz2QC0(ETWVa>-AbCguu4# zgbM%wmSyd=+iq=HRn@}tynAjyr_(w3iT}zNd*=oSg0M>nfu?C$5CnD*1RfWF5MoM_ zgvn&G-S790lO!ps`f4wcQo5MUW}jggzPPSCMa3fl4Zq+x&MAN$05^=WY2Bc2N%Csk Td3qMA00000NkvXXu0mjf=q0g- delta 382 zcmV-^0fGM71LFgbZhv4&L_t(IjjfYCZo)tmgx}0AHgRYW0!zpNWC?Kx8ssBTB}FPq zF2EUlj})Y$r1T*W6%rDp4J8WV@1=>61r&fX?Y{Zm>}m(9D(3=Vec!KfEa(LAJb&-Sb=`q6rcP2wO26L^ z%H^^X$MHM`kz6>A6Hg|SFA))@n{&C`Kt$@2o@reh`2K(7kv`5edWasnu#dUpoWPjiSifd_G@O zRR_SuP_NgkS9hybZ#*7Fbgx@gM@f?GDI&67uZI8@clZ~TN@XbW_Y+lhzuWC%5xE7jFvi4bAO5dQ cS>03TUz%BicENYY1^@s607*qoM6N<$f-9G>{{R30 diff --git a/core/img/actions/info.svg b/core/img/actions/info.svg index 4f5e644b25..1e07aed852 100644 --- a/core/img/actions/info.svg +++ b/core/img/actions/info.svg @@ -10,59 +10,17 @@ xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - width="16px" - height="16px" - id="svg3281" - version="1.1" - inkscape:version="0.48.2 r9819" - sodipodi:docname="info.svg" - inkscape:export-filename="/home/emerzh/Documents/img/actions/info.png" - inkscape:export-xdpi="250.02" - inkscape:export-ydpi="250.02"> - - - - - - - - + version="1.0" + width="16" + height="16" + id="svg11300" + inkscape:version="0.48.1 r9760" + sodipodi:docname="users.svg" + inkscape:export-filename="/home/jancborchardt/jancborchardt/ownCloud/icons/users.png" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90"> + id="metadata26"> @@ -73,31 +31,1728 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - i + transform="matrix(0.78786264,0,0,0.78786264,-3.1483699,0.44173984)" + id="g3743-3" + style="opacity:0.6;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-opacity:1" /> + + + + + + + From 715e376cd2cc6bb2a65be0720c6c1fff0acaa5b9 Mon Sep 17 00:00:00 2001 From: Bart Visscher Date: Tue, 25 Oct 2011 20:01:40 +0200 Subject: [PATCH 08/21] Fix setproperty form --- .../templates/part.setpropertyform.php | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/apps/contacts/templates/part.setpropertyform.php b/apps/contacts/templates/part.setpropertyform.php index afdba2bd75..eb8a67a8aa 100644 --- a/apps/contacts/templates/part.setpropertyform.php +++ b/apps/contacts/templates/part.setpropertyform.php @@ -7,40 +7,40 @@
    1. - +
    2. - +
    3. - +
    4. - +
    5. - +
    6. - +
    7. - +
    -

    +

    - +

    From c0e9c805eceb24d25a57806684d9b5e3e5795e43 Mon Sep 17 00:00:00 2001 From: Bart Visscher Date: Thu, 27 Oct 2011 22:46:52 +0200 Subject: [PATCH 09/21] Disable loading non-existing settings script in bookmark app --- apps/bookmarks/settings.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/bookmarks/settings.php b/apps/bookmarks/settings.php index 8186472dec..0ace04fa2c 100644 --- a/apps/bookmarks/settings.php +++ b/apps/bookmarks/settings.php @@ -8,6 +8,6 @@ $tmpl = new OC_Template( 'bookmarks', 'settings'); -OC_Util::addScript('bookmarks','settings'); +//OC_Util::addScript('bookmarks','settings'); return $tmpl->fetchPage(); From 6d4d15b221443e0cfb375f9870e34e825cc79c37 Mon Sep 17 00:00:00 2001 From: Bart Visscher Date: Thu, 27 Oct 2011 22:47:56 +0200 Subject: [PATCH 10/21] Fix html id's in part.addcardform.php --- apps/contacts/templates/part.addcardform.php | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/apps/contacts/templates/part.addcardform.php b/apps/contacts/templates/part.addcardform.php index 8e482cc4eb..a596ad8163 100644 --- a/apps/contacts/templates/part.addcardform.php +++ b/apps/contacts/templates/part.addcardform.php @@ -19,7 +19,7 @@
    1. -
      +
    2. @@ -81,19 +81,19 @@
    3. - +
    4. - +
    5. - +
    6. - +
    7. From 7b01858c570f5d9d70946b257b66ecca144e2fbd Mon Sep 17 00:00:00 2001 From: Bart Visscher Date: Thu, 27 Oct 2011 22:48:50 +0200 Subject: [PATCH 11/21] Enable php display_errors setting --- lib/base.php | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lib/base.php b/lib/base.php index d5fff1e0a7..c52b4493e0 100644 --- a/lib/base.php +++ b/lib/base.php @@ -77,6 +77,9 @@ class OC{ // set some stuff //ob_start(); error_reporting(E_ALL | E_STRICT); + if (defined('DEBUG') && DEBUG){ + ini_set('display_errors', 1); + } date_default_timezone_set('Europe/Berlin'); ini_set('arg_separator.output','&'); From a809fe9a048d53c23bb962da5f1b133f4aac82b8 Mon Sep 17 00:00:00 2001 From: Brice Maron Date: Sat, 29 Oct 2011 00:27:25 +0200 Subject: [PATCH 12/21] Add a dependencies check apps --- apps/dependencies_chk/appinfo/app.php | 9 ++ apps/dependencies_chk/appinfo/info.xml | 11 +++ apps/dependencies_chk/css/style.css | 9 ++ apps/dependencies_chk/settings.php | 91 ++++++++++++++++++++ apps/dependencies_chk/templates/settings.php | 16 ++++ 5 files changed, 136 insertions(+) create mode 100644 apps/dependencies_chk/appinfo/app.php create mode 100644 apps/dependencies_chk/appinfo/info.xml create mode 100644 apps/dependencies_chk/css/style.css create mode 100644 apps/dependencies_chk/settings.php create mode 100644 apps/dependencies_chk/templates/settings.php diff --git a/apps/dependencies_chk/appinfo/app.php b/apps/dependencies_chk/appinfo/app.php new file mode 100644 index 0000000000..dea2cd39f8 --- /dev/null +++ b/apps/dependencies_chk/appinfo/app.php @@ -0,0 +1,9 @@ + 14, + 'id' => 'dependencies_chk', + 'name' => 'Owncloud Install Info' )); + +OC_APP::registerAdmin('dependencies_chk','settings'); diff --git a/apps/dependencies_chk/appinfo/info.xml b/apps/dependencies_chk/appinfo/info.xml new file mode 100644 index 0000000000..38a6dee256 --- /dev/null +++ b/apps/dependencies_chk/appinfo/info.xml @@ -0,0 +1,11 @@ + + + dependencies_chk + Owncloud dependencies info + 0.01 + MIT + Brice Maron (eMerzh) + 2 + Display OwnCloud's dependencies informations (missings modules, ...) + + diff --git a/apps/dependencies_chk/css/style.css b/apps/dependencies_chk/css/style.css new file mode 100644 index 0000000000..30f204be7b --- /dev/null +++ b/apps/dependencies_chk/css/style.css @@ -0,0 +1,9 @@ +#status_list legend { font-weight: bold; color: #888888; } +.state > li { margin-bottom: 3px; padding-left: 0.5em; list-style-type: circle; } +.state .state_module { font-weight:bold; text-shadow: 0 1px 0 #DDD; cursor:help;} + +.state_used ul, .state_used li { display:inline; } + +.state_ok .state_module { color: #009700; } +.state_warning .state_module { color: #FF9B29; } +.state_error .state_module { color: #FF3B3B; } diff --git a/apps/dependencies_chk/settings.php b/apps/dependencies_chk/settings.php new file mode 100644 index 0000000000..ca60953215 --- /dev/null +++ b/apps/dependencies_chk/settings.php @@ -0,0 +1,91 @@ +. + * + */ +$l=new OC_L10N('dependencies_chk'); +$tmpl = new OC_Template( 'dependencies_chk', 'settings'); + +$modules = array(); + +//Possible status are : ok, error, warning +$modules[] =array( + 'status' => function_exists('json_encode') ? 'ok' : 'error', + 'part'=> 'php-json', + 'modules'=> array('core'), + 'message'=> $l->t('The php-json module is needed by the many application for inter communications')); + +$modules[] =array( + 'status' => function_exists('curl_init') ? 'ok' : 'error', + 'part'=> 'php-curl', + 'modules'=> array('bookmarks'), + 'message'=> $l->t('The php-curl modude is needed to fetch the page title when adding a bookmarks')); + +$modules[] =array( + 'status' => function_exists('imagepng') ? 'ok' : 'error', + 'part'=> 'php-gd', + 'modules'=> array('gallery'), + 'message'=> $l->t('The php-gd module is needed to create thumbnails of your images')); + +$modules[] =array( + 'status' => OC_Helper::canExecute("mp3info") ? 'ok' : 'warning', + 'part'=> 'mp3info', + 'modules'=> array('media'), + 'message'=> $l->t('The program mp3info is useful to discover ID3 tags of your music files')); + +$modules[] =array( + 'status' => OC_Helper::canExecute("ldap_bind") ? 'ok' : 'error', + 'part'=> 'php-ldap', + 'modules'=> array('user_ldap'), + 'message'=> $l->t('The php-ldap module is needed connect to your ldap server')); + +$modules[] =array( + 'status' => class_exists('ZipArchive') ? 'ok' : 'warning', + 'part'=> 'php-zip', + 'modules'=> array('admin_export','core'), + 'message'=> $l->t('The php-zip module is needed download multiple files at once')); + +$modules[] =array( + 'status' => function_exists('mb_detect_encoding') ? 'ok' : 'error', + 'part'=> 'php-mb_multibyte ', + 'modules'=> array('core'), + 'message'=> $l->t('The php-mb_multibyte module is needed to manage correctly the encoding.')); + +$modules[] =array( + 'status' => function_exists('ctype_digit') ? 'ok' : 'error', + 'part'=> 'php-ctype', + 'modules'=> array('core'), + 'message'=> $l->t('The php-ctype module is needed validate data.')); + + +foreach($modules as $key => $module) { + $enabled = false ; + foreach($module['modules'] as $app) { + if(OC_App::isEnabled($app) || $app=='core'){ + $enabled = true; + } + } + if($enabled == false) unset($modules[$key]); +} + +OC_UTIL::addStyle('dependencies_chk', 'style'); +$tmpl->assign( 'items', $modules ); + +return $tmpl->fetchPage(); diff --git a/apps/dependencies_chk/templates/settings.php b/apps/dependencies_chk/templates/settings.php new file mode 100644 index 0000000000..8ff27ebb18 --- /dev/null +++ b/apps/dependencies_chk/templates/settings.php @@ -0,0 +1,16 @@ +
      + t('Dependencies status');?> +
        + +
      • + +
        t('Used by :');?> +
          + +
        • + +
        +
      • + +
      +
      \ No newline at end of file From 5ffec927012a98cdcc409318dd1b2a264f071b83 Mon Sep 17 00:00:00 2001 From: Robin Appelman Date: Sat, 29 Oct 2011 00:49:52 +0200 Subject: [PATCH 13/21] upgrade to Sabredav 1.5.4 --- 3rdparty/Sabre.includes.php | 2 +- 3rdparty/Sabre/CardDAV/AddressBook.php | 10 ++--- 3rdparty/Sabre/CardDAV/Backend/Abstract.php | 14 +++--- 3rdparty/Sabre/CardDAV/Backend/PDO.php | 6 +-- 3rdparty/Sabre/CardDAV/Card.php | 8 +--- 3rdparty/Sabre/CardDAV/ICard.php | 10 ++--- 3rdparty/Sabre/CardDAV/Plugin.php | 9 ++-- 3rdparty/Sabre/CardDAV/UserAddressBooks.php | 8 ++-- 3rdparty/Sabre/CardDAV/Version.php | 6 +-- .../Sabre/DAV/Browser/GuessContentType.php | 2 +- 3rdparty/Sabre/DAV/Server.php | 2 +- 3rdparty/Sabre/DAV/Version.php | 2 +- .../Sabre/DAVACL/Exception/NeedPrivileges.php | 10 ++--- 3rdparty/Sabre/DAVACL/PrincipalCollection.php | 2 +- 3rdparty/Sabre/VObject/Component.php | 13 ++++-- 3rdparty/Sabre/VObject/Element/DateTime.php | 43 +++++++++++++++---- .../Sabre/VObject/Element/MultiDateTime.php | 6 +-- 3rdparty/Sabre/VObject/Node.php | 7 +++ 3rdparty/Sabre/VObject/Property.php | 13 ++++-- 3rdparty/Sabre/VObject/Reader.php | 6 ++- 3rdparty/Sabre/VObject/Version.php | 2 +- 21 files changed, 103 insertions(+), 78 deletions(-) diff --git a/3rdparty/Sabre.includes.php b/3rdparty/Sabre.includes.php index 9d389288c7..d41b287b77 100644 --- a/3rdparty/Sabre.includes.php +++ b/3rdparty/Sabre.includes.php @@ -71,6 +71,7 @@ include 'Sabre/DAV/IExtendedCollection.php'; /* Node abstract implementations */ include 'Sabre/DAV/Node.php'; include 'Sabre/DAV/File.php'; +include 'Sabre/DAV/Collection.php'; include 'Sabre/DAV/Directory.php'; /* Utilities */ @@ -124,4 +125,3 @@ include 'Sabre/DAV/Auth/Backend/PDO.php'; /* DavMount plugin */ include 'Sabre/DAV/Mount/Plugin.php'; - diff --git a/3rdparty/Sabre/CardDAV/AddressBook.php b/3rdparty/Sabre/CardDAV/AddressBook.php index 3333480ea8..471ca7b338 100644 --- a/3rdparty/Sabre/CardDAV/AddressBook.php +++ b/3rdparty/Sabre/CardDAV/AddressBook.php @@ -1,7 +1,9 @@ extensionMap[$extension])) return $this->extensionMap[$extension]; diff --git a/3rdparty/Sabre/DAV/Server.php b/3rdparty/Sabre/DAV/Server.php index b99866dad5..3d76d4f191 100644 --- a/3rdparty/Sabre/DAV/Server.php +++ b/3rdparty/Sabre/DAV/Server.php @@ -821,7 +821,7 @@ class Sabre_DAV_Server { $node->put($body); $this->httpResponse->setHeader('Content-Length','0'); - $this->httpResponse->sendStatus(200); + $this->httpResponse->sendStatus(204); } else { diff --git a/3rdparty/Sabre/DAV/Version.php b/3rdparty/Sabre/DAV/Version.php index e7f7f83e6f..6bece1985e 100644 --- a/3rdparty/Sabre/DAV/Version.php +++ b/3rdparty/Sabre/DAV/Version.php @@ -14,7 +14,7 @@ class Sabre_DAV_Version { /** * Full version number */ - const VERSION = '1.5.3'; + const VERSION = '1.5.4'; /** * Stability : alpha, beta, stable diff --git a/3rdparty/Sabre/DAVACL/Exception/NeedPrivileges.php b/3rdparty/Sabre/DAVACL/Exception/NeedPrivileges.php index 640ab8efff..024ab6641f 100644 --- a/3rdparty/Sabre/DAVACL/Exception/NeedPrivileges.php +++ b/3rdparty/Sabre/DAVACL/Exception/NeedPrivileges.php @@ -2,6 +2,9 @@ /** * NeedPrivileges + * + * The 403-need privileges is thrown when a user didn't have the appropriate + * permissions to perform an operation * * @package Sabre * @subpackage DAVACL @@ -10,13 +13,6 @@ * @author Evert Pot (http://www.rooftopsolutions.nl/) * @license http://code.google.com/p/sabredav/wiki/License Modified BSD License */ - -/** - * NeedPrivileges - * - * The 403-need privileges is thrown when a user didn't have the appropriate - * permissions to perform an operation - */ class Sabre_DAVACL_Exception_NeedPrivileges extends Sabre_DAV_Exception_Forbidden { /** diff --git a/3rdparty/Sabre/DAVACL/PrincipalCollection.php b/3rdparty/Sabre/DAVACL/PrincipalCollection.php index 3cc0ae8462..4d22bf8aa7 100644 --- a/3rdparty/Sabre/DAVACL/PrincipalCollection.php +++ b/3rdparty/Sabre/DAVACL/PrincipalCollection.php @@ -9,7 +9,7 @@ * The users are instances of Sabre_DAV_Auth_Principal * * @package Sabre - * @subpackage DAV + * @subpackage DAVACL * @copyright Copyright (C) 2007-2011 Rooftop Solutions. All rights reserved. * @author Evert Pot (http://www.rooftopsolutions.nl/) * @license http://code.google.com/p/sabredav/wiki/License Modified BSD License diff --git a/3rdparty/Sabre/VObject/Component.php b/3rdparty/Sabre/VObject/Component.php index 3d5a3d7563..47cf9f3d81 100644 --- a/3rdparty/Sabre/VObject/Component.php +++ b/3rdparty/Sabre/VObject/Component.php @@ -83,13 +83,16 @@ class Sabre_VObject_Component extends Sabre_VObject_Element { if (!is_null($itemValue)) { throw new InvalidArgumentException('The second argument must not be specified, when passing a VObject'); } + $item->parent = $this; $this->children[] = $item; } elseif(is_string($item)) { if (!is_scalar($itemValue)) { throw new InvalidArgumentException('The second argument must be scalar'); } - $this->children[] = new Sabre_VObject_Property($item,$itemValue); + $item = new Sabre_VObject_Property($item,$itemValue); + $item->parent = $this; + $this->children[] = $item; } else { @@ -208,16 +211,19 @@ class Sabre_VObject_Component extends Sabre_VObject_Element { $overWrite = count($matches)?key($matches):null; if ($value instanceof Sabre_VObject_Component || $value instanceof Sabre_VObject_Property) { + $value->parent = $this; if (!is_null($overWrite)) { $this->children[$overWrite] = $value; } else { $this->children[] = $value; } } elseif (is_scalar($value)) { + $property = new Sabre_VObject_Property($name,$value); + $property->parent = $this; if (!is_null($overWrite)) { - $this->children[$overWrite] = new Sabre_VObject_Property($name,$value); + $this->children[$overWrite] = $property; } else { - $this->children[] = new Sabre_VObject_Property($name,$value); + $this->children[] = $property; } } else { throw new InvalidArgumentException('You must pass a Sabre_VObject_Component, Sabre_VObject_Property or scalar type'); @@ -237,6 +243,7 @@ class Sabre_VObject_Component extends Sabre_VObject_Element { foreach($matches as $k=>$child) { unset($this->children[$k]); + $child->parent = null; } diff --git a/3rdparty/Sabre/VObject/Element/DateTime.php b/3rdparty/Sabre/VObject/Element/DateTime.php index 30e5c6ca86..3350ec02c8 100644 --- a/3rdparty/Sabre/VObject/Element/DateTime.php +++ b/3rdparty/Sabre/VObject/Element/DateTime.php @@ -70,7 +70,7 @@ class Sabre_VObject_Element_DateTime extends Sabre_VObject_Property { $this->setValue($dt->format('Ymd\\THis')); $this->offsetUnset('VALUE'); $this->offsetUnset('TZID'); - $this->offsetSet('VALUE','DATE-TIME'); + $this->offsetSet('VALUE','DATE-TIME'); break; case self::UTC : $dt->setTimeZone(new DateTimeZone('UTC')); @@ -116,7 +116,7 @@ class Sabre_VObject_Element_DateTime extends Sabre_VObject_Property { list( $this->dateType, $this->dateTime - ) = self::parseData($this->value, $this->offsetGet('TZID')); + ) = self::parseData($this->value, $this); return $this->dateTime; } @@ -137,7 +137,7 @@ class Sabre_VObject_Element_DateTime extends Sabre_VObject_Property { list( $this->dateType, $this->dateTime, - ) = self::parseData($this->value, $this->offsetGet('TZID')); + ) = self::parseData($this->value, $this); return $this->dateType; } @@ -151,12 +151,12 @@ class Sabre_VObject_Element_DateTime extends Sabre_VObject_Property { * 2. A DateTime object (or null) * * @param string|null $propertyValue The string to parse (yymmdd or - * ymmddThhmmss, etc..) - * @param string|null $tzid The value of the 'TZID' property. + * ymmddThhmmss, etc..) + * @param Sabre_VObject_Property|null $property The instance of the + * property we're parsing. * @return array */ - static public function parseData($propertyValue, $tzid) { - + static public function parseData($propertyValue, Sabre_VObject_Property $property = null) { if (is_null($propertyValue)) { return array(null, null); @@ -195,6 +195,8 @@ class Sabre_VObject_Element_DateTime extends Sabre_VObject_Property { ); } + // Finding the timezone. + $tzid = $property['TZID']; if (!$tzid) { return array( self::LOCAL, @@ -202,7 +204,32 @@ class Sabre_VObject_Element_DateTime extends Sabre_VObject_Property { ); } - $tz = new DateTimeZone($tzid->value); + try { + $tz = new DateTimeZone($tzid->value); + } catch (Exception $e) { + + // The id was invalid, we're going to try to find the information + // through the VTIMEZONE object. + + // First we find the root object + $root = $property; + while($root->parent) { + $root = $root->parent; + } + + if (isset($root->VTIMEZONE)) { + foreach($root->VTIMEZONE as $vtimezone) { + if (((string)$vtimezone->TZID) == $tzid) { + if (isset($vtimezone->{'X-LIC-LOCATION'})) { + $tzid = (string)$vtimezone->{'X-LIC-LOCATION'}; + } + } + } + } + + $tz = new DateTimeZone($tzid); + + } $dt = new DateTime($dateStr, $tz); $dt->setTimeZone($tz); diff --git a/3rdparty/Sabre/VObject/Element/MultiDateTime.php b/3rdparty/Sabre/VObject/Element/MultiDateTime.php index 5e677f5e5b..dc6ca5abb8 100644 --- a/3rdparty/Sabre/VObject/Element/MultiDateTime.php +++ b/3rdparty/Sabre/VObject/Element/MultiDateTime.php @@ -60,7 +60,7 @@ class Sabre_VObject_Element_MultiDateTime extends Sabre_VObject_Property { $val[] = $i->format('Ymd\\THis'); } $this->setValue(implode(',',$val)); - $this->offsetSet('VALUE','DATE-TIME'); + $this->offsetSet('VALUE','DATE-TIME'); break; case Sabre_VObject_Element_DateTime::UTC : $val = array(); @@ -121,7 +121,7 @@ class Sabre_VObject_Element_MultiDateTime extends Sabre_VObject_Property { list( $type, $dt - ) = Sabre_VObject_Element_DateTime::parseData($val, $this->offsetGet('TZID')); + ) = Sabre_VObject_Element_DateTime::parseData($val, $this); $dts[] = $dt; $this->dateType = $type; } @@ -154,7 +154,7 @@ class Sabre_VObject_Element_MultiDateTime extends Sabre_VObject_Property { list( $type, $dt - ) = Sabre_VObject_Element_DateTime::parseData($val, $this->offsetGet('TZID')); + ) = Sabre_VObject_Element_DateTime::parseData($val, $this); $dts[] = $dt; $this->dateType = $type; } diff --git a/3rdparty/Sabre/VObject/Node.php b/3rdparty/Sabre/VObject/Node.php index efc7f76da7..7100b62f1c 100644 --- a/3rdparty/Sabre/VObject/Node.php +++ b/3rdparty/Sabre/VObject/Node.php @@ -25,6 +25,13 @@ abstract class Sabre_VObject_Node implements IteratorAggregate, ArrayAccess, Cou */ protected $iterator = null; + /** + * A link to the parent node + * + * @var Sabre_VObject_Node + */ + protected $parent = null; + /* {{{ IteratorAggregator interface */ /** diff --git a/3rdparty/Sabre/VObject/Property.php b/3rdparty/Sabre/VObject/Property.php index 624dd4b8a5..0605822904 100644 --- a/3rdparty/Sabre/VObject/Property.php +++ b/3rdparty/Sabre/VObject/Property.php @@ -149,13 +149,16 @@ class Sabre_VObject_Property extends Sabre_VObject_Element { if (!is_null($itemValue)) { throw new InvalidArgumentException('The second argument must not be specified, when passing a VObject'); } + $item->parent = $this; $this->parameters[] = $item; } elseif(is_string($item)) { if (!is_scalar($itemValue)) { throw new InvalidArgumentException('The second argument must be scalar'); } - $this->parameters[] = new Sabre_VObject_Parameter($item,$itemValue); + $parameter = new Sabre_VObject_Parameter($item,$itemValue); + $parameter->parent = $this; + $this->parameters[] = $parameter; } else { @@ -231,12 +234,15 @@ class Sabre_VObject_Property extends Sabre_VObject_Element { throw new InvalidArgumentException('A parameter name must be specified. This means you cannot use the $array[]="string" to add parameters.'); $this->offsetUnset($name); - $this->parameters[] = new Sabre_VObject_Parameter($name, $value); + $parameter = new Sabre_VObject_Parameter($name, $value); + $parameter->parent = $this; + $this->parameters[] = $parameter; } elseif ($value instanceof Sabre_VObject_Parameter) { if (!is_null($name)) throw new InvalidArgumentException('Don\'t specify a parameter name if you\'re passing a Sabre_VObject_Parameter. Add using $array[]=$parameterObject.'); - + + $value->parent = $this; $this->parameters[] = $value; } else { throw new InvalidArgumentException('You can only add parameters to the property object'); @@ -258,6 +264,7 @@ class Sabre_VObject_Property extends Sabre_VObject_Element { $result = array(); foreach($this->parameters as $key=>$parameter) { if ($parameter->name == $name) { + $parameter->parent = null; unset($this->parameters[$key]); } diff --git a/3rdparty/Sabre/VObject/Reader.php b/3rdparty/Sabre/VObject/Reader.php index c38afbfb63..5ed7882ac9 100644 --- a/3rdparty/Sabre/VObject/Reader.php +++ b/3rdparty/Sabre/VObject/Reader.php @@ -95,7 +95,7 @@ class Sabre_VObject_Reader { while(stripos($nextLine,"END:")!==0) { - $obj->children[] = self::readLine($lines); + $obj->add(self::readLine($lines)); $nextLine = current($lines); if ($nextLine===false) @@ -140,7 +140,9 @@ class Sabre_VObject_Reader { if ($matches['parameters']) { - $obj->parameters = self::readParameters($matches['parameters']); + foreach(self::readParameters($matches['parameters']) as $param) { + $obj->add($param); + } } return $obj; diff --git a/3rdparty/Sabre/VObject/Version.php b/3rdparty/Sabre/VObject/Version.php index 950c1c5110..937c367e22 100644 --- a/3rdparty/Sabre/VObject/Version.php +++ b/3rdparty/Sabre/VObject/Version.php @@ -14,7 +14,7 @@ class Sabre_VObject_Version { /** * Full version number */ - const VERSION = '1.2.2'; + const VERSION = '1.2.4'; /** * Stability : alpha, beta, stable From a21908cf18fe139976a4eec494c0dce037c08841 Mon Sep 17 00:00:00 2001 From: Brice Maron Date: Sat, 29 Oct 2011 10:07:01 +0200 Subject: [PATCH 14/21] Change name and fix a typo --- apps/admin_dependencies_chk/appinfo/app.php | 9 +++++++++ .../appinfo/info.xml | 2 +- .../css/style.css | 0 .../settings.php | 8 ++++---- .../templates/settings.php | 0 apps/dependencies_chk/appinfo/app.php | 9 --------- 6 files changed, 14 insertions(+), 14 deletions(-) create mode 100644 apps/admin_dependencies_chk/appinfo/app.php rename apps/{dependencies_chk => admin_dependencies_chk}/appinfo/info.xml (90%) rename apps/{dependencies_chk => admin_dependencies_chk}/css/style.css (100%) rename apps/{dependencies_chk => admin_dependencies_chk}/settings.php (93%) rename apps/{dependencies_chk => admin_dependencies_chk}/templates/settings.php (100%) delete mode 100644 apps/dependencies_chk/appinfo/app.php diff --git a/apps/admin_dependencies_chk/appinfo/app.php b/apps/admin_dependencies_chk/appinfo/app.php new file mode 100644 index 0000000000..e2169b5dd7 --- /dev/null +++ b/apps/admin_dependencies_chk/appinfo/app.php @@ -0,0 +1,9 @@ + 14, + 'id' => 'admin_dependencies_chk', + 'name' => 'Owncloud Install Info' )); + +OC_APP::registerAdmin('admin_dependencies_chk','settings'); diff --git a/apps/dependencies_chk/appinfo/info.xml b/apps/admin_dependencies_chk/appinfo/info.xml similarity index 90% rename from apps/dependencies_chk/appinfo/info.xml rename to apps/admin_dependencies_chk/appinfo/info.xml index 38a6dee256..7216a1ee86 100644 --- a/apps/dependencies_chk/appinfo/info.xml +++ b/apps/admin_dependencies_chk/appinfo/info.xml @@ -1,6 +1,6 @@ - dependencies_chk + admin_dependencies_chk Owncloud dependencies info 0.01 MIT diff --git a/apps/dependencies_chk/css/style.css b/apps/admin_dependencies_chk/css/style.css similarity index 100% rename from apps/dependencies_chk/css/style.css rename to apps/admin_dependencies_chk/css/style.css diff --git a/apps/dependencies_chk/settings.php b/apps/admin_dependencies_chk/settings.php similarity index 93% rename from apps/dependencies_chk/settings.php rename to apps/admin_dependencies_chk/settings.php index ca60953215..a3c9396497 100644 --- a/apps/dependencies_chk/settings.php +++ b/apps/admin_dependencies_chk/settings.php @@ -20,8 +20,8 @@ * License along with this library. If not, see . * */ -$l=new OC_L10N('dependencies_chk'); -$tmpl = new OC_Template( 'dependencies_chk', 'settings'); +$l=new OC_L10N('admin_dependencies_chk'); +$tmpl = new OC_Template( 'admin_dependencies_chk', 'settings'); $modules = array(); @@ -30,7 +30,7 @@ $modules[] =array( 'status' => function_exists('json_encode') ? 'ok' : 'error', 'part'=> 'php-json', 'modules'=> array('core'), - 'message'=> $l->t('The php-json module is needed by the many application for inter communications')); + 'message'=> $l->t('The php-json module is needed by the many applications for inter communications')); $modules[] =array( 'status' => function_exists('curl_init') ? 'ok' : 'error', @@ -85,7 +85,7 @@ foreach($modules as $key => $module) { if($enabled == false) unset($modules[$key]); } -OC_UTIL::addStyle('dependencies_chk', 'style'); +OC_UTIL::addStyle('admin_dependencies_chk', 'style'); $tmpl->assign( 'items', $modules ); return $tmpl->fetchPage(); diff --git a/apps/dependencies_chk/templates/settings.php b/apps/admin_dependencies_chk/templates/settings.php similarity index 100% rename from apps/dependencies_chk/templates/settings.php rename to apps/admin_dependencies_chk/templates/settings.php diff --git a/apps/dependencies_chk/appinfo/app.php b/apps/dependencies_chk/appinfo/app.php deleted file mode 100644 index dea2cd39f8..0000000000 --- a/apps/dependencies_chk/appinfo/app.php +++ /dev/null @@ -1,9 +0,0 @@ - 14, - 'id' => 'dependencies_chk', - 'name' => 'Owncloud Install Info' )); - -OC_APP::registerAdmin('dependencies_chk','settings'); From eaad3ab45fa8a1d33a24afd7147b674aa79434ee Mon Sep 17 00:00:00 2001 From: Brice Maron Date: Sat, 29 Oct 2011 10:15:29 +0200 Subject: [PATCH 15/21] Be consistent with licencing --- apps/admin_dependencies_chk/appinfo/info.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/admin_dependencies_chk/appinfo/info.xml b/apps/admin_dependencies_chk/appinfo/info.xml index 7216a1ee86..10721ece15 100644 --- a/apps/admin_dependencies_chk/appinfo/info.xml +++ b/apps/admin_dependencies_chk/appinfo/info.xml @@ -3,7 +3,7 @@ admin_dependencies_chk Owncloud dependencies info 0.01 - MIT + AGPL Brice Maron (eMerzh) 2 Display OwnCloud's dependencies informations (missings modules, ...) From e533e82bc9526ef9869b20e99b745c210348218f Mon Sep 17 00:00:00 2001 From: Brice Maron Date: Sat, 29 Oct 2011 11:40:48 +0200 Subject: [PATCH 16/21] Add sequence name in insertid to be more portable --- apps/bookmarks/ajax/addBookmark.php | 8 +------- apps/calendar/lib/calendar.php | 4 ++-- apps/calendar/lib/object.php | 4 ++-- apps/contacts/lib/addressbook.php | 4 ++-- apps/contacts/lib/vcard.php | 4 ++-- apps/media/lib_collection.php | 2 +- lib/db.php | 10 ++++++++-- 7 files changed, 18 insertions(+), 18 deletions(-) diff --git a/apps/bookmarks/ajax/addBookmark.php b/apps/bookmarks/ajax/addBookmark.php index 3975fd15f8..45b16ae5fa 100644 --- a/apps/bookmarks/ajax/addBookmark.php +++ b/apps/bookmarks/ajax/addBookmark.php @@ -54,13 +54,7 @@ $params=array( ); $query->execute($params); -if($CONFIG_DBTYPE == 'pgsql') -{ - $query = OC_DB::prepare("SELECT currval('*PREFIX*bookmarks_id_seq')"); - $b_id = $query->execute()->fetchOne(); -} else { - $b_id = OC_DB::insertid(); -} +$b_id = OC_DB::insertid('*PREFIX*bookmarks'); if($b_id !== false) { diff --git a/apps/calendar/lib/calendar.php b/apps/calendar/lib/calendar.php index c19c0e73c0..f6d40aa534 100644 --- a/apps/calendar/lib/calendar.php +++ b/apps/calendar/lib/calendar.php @@ -111,7 +111,7 @@ class OC_Calendar_Calendar{ $stmt = OC_DB::prepare( 'INSERT INTO *PREFIX*calendar_calendars (userid,displayname,uri,ctag,calendarorder,calendarcolor,timezone,components) VALUES(?,?,?,?,?,?,?,?)' ); $result = $stmt->execute(array($userid,$name,$uri,1,$order,$color,$timezone,$components)); - return OC_DB::insertid(); + return OC_DB::insertid('*PREFIX*calendar_calendar'); } /** @@ -131,7 +131,7 @@ class OC_Calendar_Calendar{ $stmt = OC_DB::prepare( 'INSERT INTO *PREFIX*calendar_calendars (userid,displayname,uri,ctag,calendarorder,calendarcolor,timezone,components) VALUES(?,?,?,?,?,?,?,?)' ); $result = $stmt->execute(array($userid,$name,$uri,1,$order,$color,$timezone,$components)); - return OC_DB::insertid(); + return OC_DB::insertid('*PREFIX*calendar_calendars'); } /** diff --git a/apps/calendar/lib/object.php b/apps/calendar/lib/object.php index 0c3e497d4f..33871cd318 100644 --- a/apps/calendar/lib/object.php +++ b/apps/calendar/lib/object.php @@ -78,7 +78,7 @@ class OC_Calendar_Object{ OC_Calendar_Calendar::touchCalendar($id); - return OC_DB::insertid(); + return OC_DB::insertid('*PREFIX*calendar_objects'); } /** @@ -97,7 +97,7 @@ class OC_Calendar_Object{ OC_Calendar_Calendar::touchCalendar($id); - return OC_DB::insertid(); + return OC_DB::insertid('*PREFIX*calendar_objects'); } /** diff --git a/apps/contacts/lib/addressbook.php b/apps/contacts/lib/addressbook.php index 2e869d7de3..87477ed7ed 100644 --- a/apps/contacts/lib/addressbook.php +++ b/apps/contacts/lib/addressbook.php @@ -96,7 +96,7 @@ class OC_Contacts_Addressbook{ $stmt = OC_DB::prepare( 'INSERT INTO *PREFIX*contacts_addressbooks (userid,displayname,uri,description,ctag) VALUES(?,?,?,?,?)' ); $result = $stmt->execute(array($userid,$name,$uri,$description,1)); - return OC_DB::insertid(); + return OC_DB::insertid('*PREFIX*contacts_addressbooks'); } /** @@ -113,7 +113,7 @@ class OC_Contacts_Addressbook{ $stmt = OC_DB::prepare( 'INSERT INTO *PREFIX*contacts_addressbooks (userid,displayname,uri,description,ctag) VALUES(?,?,?,?,?)' ); $result = $stmt->execute(array($userid,$name,$uri,$description,1)); - return OC_DB::insertid(); + return OC_DB::insertid('*PREFIX*contacts_addressbooks'); } /** diff --git a/apps/contacts/lib/vcard.php b/apps/contacts/lib/vcard.php index 74bc0f92f1..adfa32b6f5 100644 --- a/apps/contacts/lib/vcard.php +++ b/apps/contacts/lib/vcard.php @@ -121,7 +121,7 @@ class OC_Contacts_VCard{ OC_Contacts_Addressbook::touch($id); - return OC_DB::insertid(); + return OC_DB::insertid('*PREFIX*contacts_cards'); } /** @@ -147,7 +147,7 @@ class OC_Contacts_VCard{ OC_Contacts_Addressbook::touch($id); - return OC_DB::insertid(); + return OC_DB::insertid('*PREFIX*contacts_cards'); } /** diff --git a/apps/media/lib_collection.php b/apps/media/lib_collection.php index 571cb7e685..caa3ac3f47 100644 --- a/apps/media/lib_collection.php +++ b/apps/media/lib_collection.php @@ -267,7 +267,7 @@ class OC_MEDIA_COLLECTION{ $query=self::$queries['addsong']; } $query->execute(array($name,$artist,$album,$path,$uid,$length,$track,$size)); - $songId=OC_DB::insertid(); + $songId=OC_DB::insertid('*PREFIX*media_songs'); // self::setLastUpdated(); return self::getSongId($name,$artist,$album); } diff --git a/lib/db.php b/lib/db.php index 421b08c232..c059f5ab33 100644 --- a/lib/db.php +++ b/lib/db.php @@ -224,6 +224,7 @@ class OC_DB { /** * @brief gets last value of autoincrement + * @param $table string The optional table name (will replace *PREFIX*) and add sequence suffix * @returns id * * MDB2 lastInsertID() @@ -231,9 +232,14 @@ class OC_DB { * Call this method right after the insert command or other functions may * cause trouble! */ - public static function insertid(){ + public static function insertid($table=null){ self::connect(); - return self::$connection->lastInsertId(); + if($table !== null){ + $prefix = OC_Config::getValue( "dbtableprefix", "oc_" ); + $suffix = OC_Config::getValue( "dbsequencesuffix", "_id_seq" ); + $table = str_replace( '*PREFIX*', $prefix, $table ); + } + return self::$connection->lastInsertId($table.$suffix); } /** From c7d1737d47c1846beee5d145dd73dd7924a6eea9 Mon Sep 17 00:00:00 2001 From: Brice Maron Date: Tue, 1 Nov 2011 22:35:13 +0100 Subject: [PATCH 17/21] attempt to manage some special chars in file list Added a jquery function to filter by attributes. Add more logging in rename file Use the new function to avoid errors --- apps/files_sharing/js/share.js | 6 ++-- core/js/js.js | 7 +++++ files/js/fileactions.js | 2 +- files/js/filelist.js | 54 +++++++++++++++++++--------------- files/js/files.js | 11 +++++-- files/templates/part.list.php | 2 +- lib/filestorage/local.php | 5 ++++ 7 files changed, 56 insertions(+), 31 deletions(-) diff --git a/apps/files_sharing/js/share.js b/apps/files_sharing/js/share.js index c0fc91e92a..131571351c 100644 --- a/apps/files_sharing/js/share.js +++ b/apps/files_sharing/js/share.js @@ -10,7 +10,7 @@ $(document).ready(function() { type: 'GET', url: OC.linkTo('files_sharing', 'ajax/getitem.php'), dataType: 'json', - data: 'source='+file, + data: {source: file}, async: false, success: function(users) { if (users) { @@ -184,8 +184,8 @@ function createDropdown(filename, files) { html += ''; html += ''; if (filename) { - $('tr[data-file="'+filename+'"]').addClass('mouseOver'); - $(html).appendTo($('tr[data-file="'+filename+'"] td.filename')); + $('tr').filterAttr('data-file',filename).addClass('mouseOver'); + $(html).appendTo($('tr').filterAttr('data-file',filename).find('td.filename')); } else { $(html).appendTo($('thead .share')); } diff --git a/core/js/js.js b/core/js/js.js index 9e814ca072..440f504c8f 100644 --- a/core/js/js.js +++ b/core/js/js.js @@ -401,3 +401,10 @@ if (!Array.prototype.map){ return res; }; } + +/** + * Filter Jquery selector by attribute value + **/ +$.fn.filterAttr = function(attr_name, attr_value) { + return this.filter(function() { return $(this).attr(attr_name) === attr_value; }); +}; diff --git a/files/js/fileactions.js b/files/js/fileactions.js index f95c5e84dc..9e2688e82c 100644 --- a/files/js/fileactions.js +++ b/files/js/fileactions.js @@ -56,7 +56,7 @@ FileActions={ $('#fileList .action').remove(); var actions=FileActions.get(FileActions.getCurrentMimeType(),FileActions.getCurrentType()); var file=FileActions.getCurrentFile(); - if($('tr[data-file="'+file+'"]').data('renaming')){ + if($('tr').filterAttr('data-file',file).data('renaming')){ return; } var defaultAction=FileActions.getDefault(FileActions.getCurrentMimeType(),FileActions.getCurrentType()); diff --git a/files/js/filelist.js b/files/js/filelist.js index 863a3385d1..5740ece971 100644 --- a/files/js/filelist.js +++ b/files/js/filelist.js @@ -4,7 +4,7 @@ FileList={ }, addFile:function(name,size,lastModified,loading){ var img=(loading)?OC.imagePath('core', 'loading.gif'):OC.imagePath('core', 'filetypes/file.png'); - var html=''; + var html=''; if(name.indexOf('.')!=-1){ var basename=name.substr(0,name.lastIndexOf('.')); var extention=name.substr(name.lastIndexOf('.')); @@ -29,16 +29,21 @@ FileList={ html+=''+simpleSize+''; html+=''+relative_modified_date(lastModified.getTime() / 1000)+''; html+=''; - FileList.insertElement(name,'file',$(html)); + FileList.insertElement(name,'file',$(html).attr('data-file',name)); if(loading){ - $('tr[data-file="'+name+'"]').data('loading',true); + $('tr').filterAttr('data-file',name).data('loading',true); }else{ - $('tr[data-file="'+name+'"] td.filename').draggable(dragOptions); + $('tr').filterAttr('data-file',name).find('td.filename').draggable(dragOptions); } }, addDir:function(name,size,lastModified){ - var html=''; - html+=''+name+''; + html = $('').attr({ "data-type": "dir", "data-size": size, "data-file": name}); + td = $('').attr({"class": "filename", "style": 'background-image:url('+OC.imagePath('core', 'filetypes/folder.png')+')' }); + td.append(''); + var link_elem = $('').attr({ "class": "name", "href": "index.php?dir="+ encodeURIComponent($('#dir').val()+'/'+name) }); + link_elem.append($('').addClass('nametext').text(name)); + td.append(link_elem); + html.append(td); if(size!='Pending'){ simpleSize=simpleFileSize(size); }else{ @@ -47,13 +52,15 @@ FileList={ sizeColor = Math.round(200-Math.pow((size/(1024*1024)),2)); lastModifiedTime=Math.round(lastModified.getTime() / 1000); modifiedColor=Math.round((Math.round((new Date()).getTime() / 1000)-lastModifiedTime)/60/60/24*5); - html+=''+simpleSize+''; - html+=''+relative_modified_date(lastModified.getTime() / 1000)+''; - html+=''; + td = $('').attr({ "class": "filesize", "title": humanFileSize(size), "style": 'color:rgb('+sizeColor+','+sizeColor+','+sizeColor+')'}).text(simpleSize); + html.append(td); - FileList.insertElement(name,'dir',$(html)); - $('tr[data-file="'+name+'"] td.filename').draggable(dragOptions); - $('tr[data-file="'+name+'"] td.filename').droppable(folderDropOptions); + td = $('').attr({ "class": "date" }); + td.append($('').attr({ "class": "modified", "title": formatDate(lastModified), "style": 'color:rgb('+modifiedColor+','+modifiedColor+','+modifiedColor+')' }).text( relative_modified_date(lastModified.getTime() / 1000) )); + html.append(td); + FileList.insertElement(name,'dir',html); + $('tr').filterAttr('data-file',name).find('td.filename').draggable(dragOptions); + $('tr').filterAttr('data-file',name).find('td.filename').droppable(folderDropOptions); }, refresh:function(data) { result = jQuery.parseJSON(data.responseText); @@ -64,8 +71,8 @@ FileList={ resetFileActionPanel(); }, remove:function(name){ - $('tr[data-file="'+name+'"] td.filename').draggable('destroy'); - $('tr[data-file="'+name+'"]').remove(); + $('tr').filterAttr('data-file',name).find('td.filename').draggable('destroy'); + $('tr').filterAttr('data-file',name).remove(); if($('tr[data-file]').length==0){ $('#emptyfolder').show(); $('.file_upload_filename').addClass('highlight'); @@ -101,7 +108,7 @@ FileList={ $('.file_upload_filename').removeClass('highlight'); }, loadingDone:function(name){ - var tr=$('tr[data-file="'+name+'"]'); + var tr=$('tr').filterAttr('data-file',name); tr.data('loading',false); var mime=tr.data('mime'); tr.attr('data-mime',mime); @@ -111,13 +118,13 @@ FileList={ tr.find('td.filename').draggable(dragOptions); }, isLoading:function(name){ - return $('tr[data-file="'+name+'"]').data('loading'); + return $('tr').filterAttr('data-file',name).data('loading'); }, rename:function(name){ - var tr=$('tr[data-file="'+name+'"]'); + var tr=$('tr').filterAttr('data-file',name); tr.data('renaming',true); var td=tr.children('td.filename'); - var input=$(''); + var input=$('').val(name); var form=$('
      ') form.append(input); td.children('a.name').text(''); @@ -143,7 +150,7 @@ FileList={ } $.ajax({ url: 'ajax/rename.php', - data: "dir="+$('#dir').val()+"&newname="+encodeURIComponent(newname)+"&file="+encodeURIComponent(name) + data: { dir : $('#dir').val(), newname: newname, file: name } }); }); form.click(function(event){ @@ -165,9 +172,10 @@ FileList={ files=[files]; } $.each(files,function(index,file){ - $('tr[data-file="'+file+'"]').hide(); - $('tr[data-file="'+file+'"]').find('input[type="checkbox"]').removeAttr('checked'); - $('tr[data-file="'+file+'"]').removeClass('selected'); + var files = $('tr').filterAttr('data-file',file); + files.hide(); + files.find('input[type="checkbox"]').removeAttr('checked'); + files.removeClass('selected'); }); procesSelection(); FileList.deleteCanceled=false; @@ -208,7 +216,7 @@ $(document).ready(function(){ if($('#notification').data('deletefile')) { $.each(FileList.deleteFiles,function(index,file){ - $('tr[data-file="'+file+'"]').show(); + $('tr').filterAttr('data-file',file).show(); // alert(file); }); FileList.deleteCanceled=true; diff --git a/files/js/files.js b/files/js/files.js index 902c5e5493..593eeafde8 100644 --- a/files/js/files.js +++ b/files/js/files.js @@ -1,4 +1,9 @@ $(document).ready(function() { + $('#fileList tr').each(function(){ + //little hack to set unescape filenames in attribute + $(this).attr('data-file',unescape($(this).data('file'))); + }); + if($('tr[data-file]').length==0){ $('.file_upload_filename').addClass('highlight'); } @@ -185,9 +190,9 @@ $(document).ready(function() { if(response[0] != undefined && response[0].status == 'success'){ for(var i=0;i200) $relative_date_color = 200; ?> - '> + '> diff --git a/lib/filestorage/local.php b/lib/filestorage/local.php index 01523b6b0b..9e29f85071 100644 --- a/lib/filestorage/local.php +++ b/lib/filestorage/local.php @@ -84,6 +84,11 @@ class OC_Filestorage_Local extends OC_Filestorage{ return $return; } public function rename($path1,$path2){ + if(! $this->file_exists($path1)){ + OC_Log::write('core','unable to rename, file does not exists : '.$path1,OC_Log::ERROR); + return false; + } + if($return=rename($this->datadir.$path1,$this->datadir.$path2)){ $this->clearFolderSizeCache($path1); $this->clearFolderSizeCache($path2); From 13d2c5e926e71a1ef2ef0bce96eb5a6f627cf88f Mon Sep 17 00:00:00 2001 From: Brice Maron Date: Wed, 2 Nov 2011 20:26:17 +0100 Subject: [PATCH 18/21] Fix bug with spaces in file names. --- files/js/files.js | 3 ++- files/templates/part.list.php | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/files/js/files.js b/files/js/files.js index 593eeafde8..635266164c 100644 --- a/files/js/files.js +++ b/files/js/files.js @@ -2,6 +2,7 @@ $(document).ready(function() { $('#fileList tr').each(function(){ //little hack to set unescape filenames in attribute $(this).attr('data-file',unescape($(this).data('file'))); + $(this).data('file',unescape($(this).data('file'))); }); if($('tr[data-file]').length==0){ @@ -69,7 +70,7 @@ $(document).ready(function() { } procesSelection(); } else { - var filename=$(this).parent().parent().data('file'); + var filename=$(this).parent().parent().attr('data-file'); if(!FileList.isLoading(filename)){ var mime=$(this).parent().parent().data('mime'); var type=$(this).parent().parent().data('type'); diff --git a/files/templates/part.list.php b/files/templates/part.list.php index b0ef73c406..46830ba3a3 100644 --- a/files/templates/part.list.php +++ b/files/templates/part.list.php @@ -5,7 +5,7 @@ $relative_modified_date = relative_modified_date($file['mtime']); $relative_date_color = round((time()-$file['mtime'])/60/60/24*14); // the older the file, the brighter the shade of grey; days*14 if($relative_date_color>200) $relative_date_color = 200; ?> - '> + '> From 7b3ae2edd405f31071f43f941615c9da6dd1536e Mon Sep 17 00:00:00 2001 From: Robin Appelman Date: Sun, 30 Oct 2011 15:40:42 +0100 Subject: [PATCH 19/21] use database table prefix from installer, not the old configured value --- lib/setup.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/setup.php b/lib/setup.php index 2dcedb9b82..e2d56ddaf4 100644 --- a/lib/setup.php +++ b/lib/setup.php @@ -82,7 +82,7 @@ class OC_Setup { $dbpass = $options['dbpass']; $dbname = $options['dbname']; $dbhost = $options['dbhost']; - $dbtableprefix = OC_Config::getValue('dbtableprefix','oc_'); + $dbtableprefix = $options['dbtableprefix']; OC_Config::setValue('dbname', $dbname); OC_Config::setValue('dbhost', $dbhost); OC_Config::setValue('dbtableprefix', $dbtableprefix); @@ -135,7 +135,7 @@ class OC_Setup { $dbpass = $options['dbpass']; $dbname = $options['dbname']; $dbhost = $options['dbhost']; - $dbtableprefix = OC_Config::getValue('dbtableprefix','oc_'); + $dbtableprefix = $options['dbtableprefix']; OC_CONFIG::setValue('dbname', $dbname); OC_CONFIG::setValue('dbhost', $dbhost); OC_CONFIG::setValue('dbtableprefix', $dbtableprefix); From e2907eb99db54090ded8332bee5ebb7c94e08b2f Mon Sep 17 00:00:00 2001 From: Robin Appelman Date: Thu, 3 Nov 2011 12:47:12 +0100 Subject: [PATCH 20/21] no longer rely on PEAR::isError since we can use PDO now --- apps/remoteStorage/lib_remoteStorage.php | 24 ------------------------ 1 file changed, 24 deletions(-) diff --git a/apps/remoteStorage/lib_remoteStorage.php b/apps/remoteStorage/lib_remoteStorage.php index f10a72870a..4bbadafe7d 100644 --- a/apps/remoteStorage/lib_remoteStorage.php +++ b/apps/remoteStorage/lib_remoteStorage.php @@ -4,12 +4,6 @@ class OC_remoteStorage { public static function getValidTokens($ownCloudUser, $userAddress, $dataScope) { $query=OC_DB::prepare("SELECT token,appUrl FROM *PREFIX*authtoken WHERE user=? AND userAddress=? AND dataScope=? LIMIT 100"); $result=$query->execute(array($ownCloudUser,$userAddress,$dataScope)); - if( PEAR::isError($result)) { - $entry = 'DB Error: "'.$result->getMessage().'"
      '; - $entry .= 'Offending command was: '.$result->getDebugInfo().'
      '; - OC_Log::write('removeStorage',$entry,OC_Log::ERROR); - die( $entry ); - } $ret = array(); while($row=$result->fetchRow()){ $ret[$row['token']]=$userAddress; @@ -21,12 +15,6 @@ class OC_remoteStorage { $user=OC_User::getUser(); $query=OC_DB::prepare("SELECT token,appUrl,userAddress,dataScope FROM *PREFIX*authtoken WHERE user=? LIMIT 100"); $result=$query->execute(array($user)); - if( PEAR::isError($result)) { - $entry = 'DB Error: "'.$result->getMessage().'"
      '; - $entry .= 'Offending command was: '.$result->getDebugInfo().'
      '; - OC_Log::write('removeStorage',$entry,OC_Log::ERROR); - die( $entry ); - } $ret = array(); while($row=$result->fetchRow()){ $ret[$row['token']] = array( @@ -42,23 +30,11 @@ class OC_remoteStorage { $user=OC_User::getUser(); $query=OC_DB::prepare("DELETE FROM *PREFIX*authtoken WHERE token=? AND user=?"); $result=$query->execute(array($token,$user)); - if( PEAR::isError($result)) { - $entry = 'DB Error: "'.$result->getMessage().'"
      '; - $entry .= 'Offending command was: '.$result->getDebugInfo().'
      '; - OC_Log::write('removeStorage',$entry,OC_Log::ERROR); - die( $entry ); - } } private static function addToken($token, $appUrl, $userAddress, $dataScope){ $user=OC_User::getUser(); $query=OC_DB::prepare("INSERT INTO *PREFIX*authtoken (`token`,`appUrl`,`user`,`userAddress`,`dataScope`) VALUES(?,?,?,?,?)"); $result=$query->execute(array($token,$appUrl,$user,$userAddress,$dataScope)); - if( PEAR::isError($result)) { - $entry = 'DB Error: "'.$result->getMessage().'"
      '; - $entry .= 'Offending command was: '.$result->getDebugInfo().'
      '; - OC_Log::write('removeStorage',$entry,OC_Log::ERROR); - die( $entry ); - } } public static function createDataScope($appUrl, $userAddress, $dataScope){ $token=uniqid(); From 8eda6f8febcd8e7320d758e512d2d887d86debb0 Mon Sep 17 00:00:00 2001 From: Robin Appelman Date: Thu, 3 Nov 2011 13:09:44 +0100 Subject: [PATCH 21/21] make webfinger work properly if owncloud is installed in a subdirectory --- apps/user_webfinger/webfinger.php | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/apps/user_webfinger/webfinger.php b/apps/user_webfinger/webfinger.php index afb5368968..349afaba50 100644 --- a/apps/user_webfinger/webfinger.php +++ b/apps/user_webfinger/webfinger.php @@ -4,7 +4,14 @@ if($_SERVER['SCRIPT_NAME'] == '/.well-known/webfinger.php') { } else { header('Please-first: activate'); } -header("Content-Type: application/xml+xrd"); +// header("Content-Type: application/xml+xrd"); + +// calculate the documentroot +// modified version of the one in lib/base.php that takes the .well-known symlink into account +$DOCUMENTROOT=realpath($_SERVER['DOCUMENT_ROOT']); +$SERVERROOT=str_replace("\\",'/',dirname(dirname(dirname(dirname(__FILE__))))); +$SUBURI=substr(realpath($_SERVER["SCRIPT_FILENAME"]),strlen($SERVERROOT)); +$WEBROOT=substr($SUBURI,0,-34); if($_GET['q']) { $bits = explode('@', $_GET['q']); @@ -20,5 +27,5 @@ echo "<"; ?xml version="1.0" encoding="UTF-8"?> - +