{"id":211,"date":"2014-08-16T21:24:04","date_gmt":"2014-08-16T20:24:04","guid":{"rendered":"http:\/\/ipsview.brownson.at\/?p=211"},"modified":"2014-09-23T21:54:00","modified_gmt":"2014-09-23T20:54:00","slug":"synchronisieren-von-views-auf-einen-remote-rechner","status":"publish","type":"post","link":"https:\/\/ipsview.brownson.at\/?p=211","title":{"rendered":"Synchronisieren von Views auf einen Remote Rechner"},"content":{"rendered":"<p>Wer eine IP-Symcon Entwicklungsumgebung betreibt (also eine Kopie seines normalen IP-Symcon Systems), der wird immer wieder mal auf das Problem sto\u00dfen, dass er eine modifizierte View zur\u00fcck auf sein Produktionssystem bringen muss oder\u00a0umgekehrt.<\/p>\n<p>Bei modifizierten Views kann man das noch relativ einfach durch kopieren des Files im Media Verzeichnis machen, bei neuen Views ist das schon um einiges komplizierten, da die View am Remote Rechner ja noch gar nicht vorhanden ist.<\/p>\n<p>Anbei ein Script, mit dem man alle Views auf einen Remote Rechner synchronisieren kann:<\/p>\n<p><span style=\"text-decoration: underline;\"><strong>Achtung:<\/strong><\/span><br \/>\nDas Skript ersetzt alle Views auf dem Remote Server mit dem Inhalt des aufrufenden Server. Fehlende Views werden auf dem Remote Server neu angelegt! Es wird empfohlen vor dem Ausf\u00fchren des Skripts ein Backup des Remote Servers zu machen.<\/p>\n<p><span style=\"text-decoration: underline;\"><strong>Voraussetzung:<\/strong><\/span><br \/>\nDas IP-Symcon auf dem Remote Rechner muss ein Clone des bestehenden Systems sein, da ansonsten die IDs in den Views nicht zusammenpassen (eine IP-Symcon Development Umgebung).<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"php\" data-enlighter-highlight=\"17\" data-enlighter-title=\"Views synchronisieren\">\r\n&lt;?\r\n\t\/**\r\n\t * @file          IPSView_SyncViewsToRemoteServer.php\r\n\t * @author        brownson\r\n\t * @version\r\n\t *   Version 1.0, 2014-08-16 brownson: Initiale Version&lt;br\/&gt;\r\n\t *\r\n\t * Skript um alle Views auf einen Remote Server zu synchronisieren\r\n\t *\r\n\t * Konfiguration Einstellungen:\r\n\t *   + $remoteAddress - spezifiziert die Adresse der IP-Symcon Remote Json API\r\n\t *                      Beispiel: http:\/\/name@domain.de:pwd@192.168.0.1:82\/api\/\r\n\t *\r\n\t *\/\r\n\r\n\t\/\/ Konfiguration\r\n\t$remoteAddress = &quot;http:\/\/&lt;&lt;IPSymconLizenzName&gt;&gt;:&lt;&lt;MeinPasswort&gt;&gt;@&lt;&lt;IPAdresse&gt;&gt;:&lt;&lt;Port&gt;&gt;\/api\/&quot;;\r\n\r\n\t\/\/ -------------------------------------------------------------------------\r\n\r\n\t$rpc = new JSONRPC($remoteAddress);\r\n\t$mediaList = IPS_GetMediaList();\r\n\tforeach ($mediaList as $mediaID) {\r\n\t\techo &quot;Process Media with ID=&quot;.$mediaID.PHP_EOL;\r\n\t\t$mediaName = IPS_GetName($mediaID);\r\n\t\t$nameArray = explode(&#039;.&#039;, $mediaName);\r\n\t\tif (count($nameArray) &gt;= 2 and $nameArray[count($nameArray)-1]==&#039;ipsView&#039;) {\r\n\t\t\techo &quot;Found View with ID=&quot;.$mediaID.&#039;, Name=&#039;.$mediaName.PHP_EOL;\r\n\t\t\t$mediaContent = IPS_GetMediaContent($mediaID);\r\n\t\t\t$media        = IPS_GetMedia($mediaID);\r\n\t\t\t$mediaFile    = $media[&#039;MediaFile&#039;];\r\n\t\t\ttry {\r\n\t\t\t\techo &quot;Found View with ID=&quot;.$mediaID.&#039;, Name=&#039;.$mediaName.PHP_EOL;\r\n\t\t\t\t$rpcMediaID = @$rpc-&gt;IPS_GetMediaIDByName($mediaName, 0);\r\n\t\t\t} catch (Exception $e) {\r\n\t\t\t\t$rpcMediaID = 0;\r\n\t\t\t}\r\n\t\t\tif ($rpcMediaID==0) {\r\n\t\t\t\t$rpcMediaID = $rpc-&gt;IPS_CreateMedia(0);\r\n\t\t\t\techo &quot;Created new Media wiht ID=&quot;.$rpcMediaID.&#039; on Remote HOST&#039;.PHP_EOL;\r\n\t\t\t}\r\n\t\t\techo &quot;Sync IPSView MediaData wiht ID=&quot;.$rpcMediaID.&#039; on Remote HOST&#039;.PHP_EOL;\r\n\t\t\t$rpc-&gt;IPS_SetName($rpcMediaID, $mediaName);\r\n\t\t\t$rpc-&gt;IPS_SetMediaFile($rpcMediaID, $mediaFile, false);\r\n\t\t\t$rpc-&gt;IPS_SetMediaContent($rpcMediaID, $mediaContent);\r\n\t\t}\r\n\t}\r\n\r\n\t\/\/ -------------------------------------------------------------------------\r\n\r\n?&gt;\r\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Wer eine IP-Symcon Entwicklungsumgebung betreibt (also eine Kopie seines normalen  [&#8230;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6],"tags":[],"class_list":["post-211","post","type-post","status-publish","format-standard","hentry","category-skripte"],"_links":{"self":[{"href":"https:\/\/ipsview.brownson.at\/index.php?rest_route=\/wp\/v2\/posts\/211","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ipsview.brownson.at\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/ipsview.brownson.at\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/ipsview.brownson.at\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/ipsview.brownson.at\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=211"}],"version-history":[{"count":5,"href":"https:\/\/ipsview.brownson.at\/index.php?rest_route=\/wp\/v2\/posts\/211\/revisions"}],"predecessor-version":[{"id":237,"href":"https:\/\/ipsview.brownson.at\/index.php?rest_route=\/wp\/v2\/posts\/211\/revisions\/237"}],"wp:attachment":[{"href":"https:\/\/ipsview.brownson.at\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=211"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ipsview.brownson.at\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=211"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ipsview.brownson.at\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=211"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}