{"id":929,"date":"2016-10-13T13:34:19","date_gmt":"2016-10-13T11:34:19","guid":{"rendered":"http:\/\/dokumentacja.edokumenty.eu\/?page_id=929"},"modified":"2016-10-13T13:36:22","modified_gmt":"2016-10-13T11:36:22","slug":"zrobic-patcha-systemu","status":"publish","type":"page","link":"http:\/\/developer.edokumenty.eu\/index.php\/tutoriale\/zrobic-patcha-systemu\/","title":{"rendered":"Jak zrobi\u0107 patch'a do systemu"},"content":{"rendered":"<p>Podczas ka\u017cdej aktualizacji systemu administrator po zaktualizowaniu kodu musi wykona\u0107 patche. Poni\u017cej przedstawiono kod \u017ar\u00f3d\u0142owy patcha edukacyjnego.<\/p>\n<div class=\"code-highlight code-highlight-with-label\" data-label=\"PHP\"><span class=\"js-copy-to-clipboard copy-code\">copy<\/span>\n\t<pre><code class=\"language-php js-code\">\n&lt;?php\r\n$p_path\u00a0=\u00a0str_replace('\\\\',\u00a0'\/',\u00a0Application::makeRelativePath(dirname(__FILE__)));\r\n$ppp\u00a0=\u00a0array_reverse(explode('\/',\u00a0$p_path));\r\n\r\n$patch\u00a0=\u00a0new\u00a0PatchObj();\r\n$patch-&gt;number\u00a0=\u00a0$ppp[0];\r\n$patch-&gt;version\u00a0=\u00a0$ppp[1];\r\n\r\n\/\/\u00a0Kr\u00f3tki\u00a0opis\u00a0patcha\r\n$patch-&gt;dscrpt\u00a0=\u00a0'Aktualizacja\u00a0struktury\u00a0danych\u00a0dekretacji';\r\n\r\n\/\/\u00a0dodanie\u00a0kolumny\u00a0ze\u00a0sprawdzeniem\u00a0czy\u00a0istnieje\r\n$db\u00a0=\u00a0PgManager::getInstance();\r\n$aFp\u00a0=\u00a0@$db-&gt;fields_propierty('decrees');\r\nif\u00a0(is_array($aFp)\u00a0&amp;&amp;\u00a0!array_key_exists('predcr',\u00a0$aFp))\u00a0{\r\n    $patch-&gt;sql-&gt;query('ALTER\u00a0TABLE\u00a0decrees\u00a0ADD\u00a0COLUMN\u00a0predcr\u00a0integer\u00a0default\u00a0NULL');\r\n}\r\n$patch-&gt;sql-&gt;query('SELECT\u00a01');\r\n\r\n\/\/\u00a0wykonanie\u00a0skryptu\u00a0SQL\u00a0z\u00a0pliku\r\n$patch-&gt;sql-&gt;file($p_path.'\/create_new_table.sql');\r\n\r\n\/\/\u00a0modyfikacja\u00a0danych\u00a0w\u00a0bazie\r\n$patch-&gt;sql-&gt;query('UPDATE\u00a0dav_principals\u00a0SET\u00a0uri\u00a0=\u00a0replace(uri,\u00a0\\'\/root\\',\u00a0\\'\/public\\')\u00a0WHERE\u00a0uri\u00a0~*\u00a0\\'\/root\\'\u00a0AND\u00a0is_sys\u00a0IS\u00a0TRUE');\r\n$patch-&gt;sql-&gt;query('DELETE\u00a0FROM\u00a0dav_principals\u00a0WHERE\u00a0is_sys\u00a0IS\u00a0NOT\u00a0TRUE\u00a0AND\u00a0strpos(uri,\u00a0\\'\/calendar-proxy-\\')\u00a0=\u00a00\u00a0AND\u00a0uri\u00a0NOT\u00a0IN\u00a0(SELECT\u00a0\\'principals\/\\'||usrnam\u00a0FROM\u00a0users)');\r\n\r\n\/\/\u00a0zmiana\u00a0konfiguracji\u00a0systemu\u00a0w\u00a0pliku\u00a0config.inc\r\n$patch-&gt;config-&gt;add(array('DELEGATION_ADDUID_INIT'\u00a0=&gt;\u00a0'TRUE'));\r\n\r\n\/\/\u00a0wykonanie\u00a0skryptu\u00a0PHP\r\n$patch-&gt;php-&gt;file($p_path.'\/PhpPatch411066.inc');\r\n\r\n?&gt;\n<\/code><\/pre><\/div>\n<p>&nbsp;<\/p>\n<p>Aby przetestowa\u0107 poprawno\u015b\u0107 dzia\u0142ania naszego patcha przechodzimy do katalogu<\/p>\n<div class=\"code-highlight code-highlight-with-label\" data-label=\"\"><span class=\"js-copy-to-clipboard copy-code\">copy<\/span>\n\t<pre><code class=\"language- js-code\">\npublic_html\/apps\/upgrade\/patches\/4.11\n<\/code><\/pre><\/div>\n<p>nast\u0119pnie tworzymy folder o kolejnym numerze (np. ostatni folder ma numer 066 to my tworzymy katalog 067).<\/p>\n<p>Wewn\u0105trz tego katalogu tworzymy plik <strong>patch.upg<\/strong> do kt\u00f3rego wrzucamy skrypt naszego patcha.<\/p>\n<p>Nast\u0119pnym etapem naszego testu to przeprowadzenie aktualizacji naszego systemu.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Podczas ka\u017cdej aktualizacji systemu administrator po zaktualizowaniu kodu musi wykona\u0107 patche. Poni\u017cej przedstawiono kod \u017ar\u00f3d\u0142owy patcha edukacyjnego. &nbsp; Aby przetestowa\u0107 poprawno\u015b\u0107 dzia\u0142ania naszego patcha przechodzimy do katalogu nast\u0119pnie tworzymy folder o kolejnym numerze (np. ostatni folder ma numer 066 to my tworzymy katalog 067). Wewn\u0105trz tego katalogu tworzymy plik patch.upg do kt\u00f3rego wrzucamy skrypt naszego [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":0,"parent":443,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":[],"tags":[],"_links":{"self":[{"href":"http:\/\/developer.edokumenty.eu\/index.php\/wp-json\/wp\/v2\/pages\/929"}],"collection":[{"href":"http:\/\/developer.edokumenty.eu\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"http:\/\/developer.edokumenty.eu\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"http:\/\/developer.edokumenty.eu\/index.php\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"http:\/\/developer.edokumenty.eu\/index.php\/wp-json\/wp\/v2\/comments?post=929"}],"version-history":[{"count":2,"href":"http:\/\/developer.edokumenty.eu\/index.php\/wp-json\/wp\/v2\/pages\/929\/revisions"}],"predecessor-version":[{"id":931,"href":"http:\/\/developer.edokumenty.eu\/index.php\/wp-json\/wp\/v2\/pages\/929\/revisions\/931"}],"up":[{"embeddable":true,"href":"http:\/\/developer.edokumenty.eu\/index.php\/wp-json\/wp\/v2\/pages\/443"}],"wp:attachment":[{"href":"http:\/\/developer.edokumenty.eu\/index.php\/wp-json\/wp\/v2\/media?parent=929"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/developer.edokumenty.eu\/index.php\/wp-json\/wp\/v2\/tags?post=929"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}