{"id":2874,"date":"2017-03-30T20:07:21","date_gmt":"2017-03-30T18:07:21","guid":{"rendered":"http:\/\/blog.nebule.org\/?p=2874"},"modified":"2017-04-01T23:29:53","modified_gmt":"2017-04-01T21:29:53","slug":"modification-de-lordre-de-prise-en-compte-des-proprietes-dun-objet","status":"publish","type":"post","link":"http:\/\/blog.nebule.org\/?p=2874","title":{"rendered":"Modification de l&rsquo;ordre de prise en compte des propri\u00e9t\u00e9s d&rsquo;un objet"},"content":{"rendered":"<p style=\"text-align: justify;\">Je reprends progressivement le d\u00e9veloppement de <a title=\"nebule\" href=\"http:\/\/www.nebule.org\" target=\"_blank\">nebule<\/a> pour corriger le bugg de <a title=\"klicty\" href=\"http:\/\/www.klicty.org\" target=\"_blank\">klicty<\/a> et am\u00e9liorer dans <a title=\"sylabe\" href=\"http:\/\/www.sylabe.org\" target=\"_blank\">sylabe<\/a> le module correspondant.<br \/>\nEt je tombe sur un probl\u00e8me non dans l&rsquo;impl\u00e9mentation mais dans la fa\u00e7on dont on prend en compte les propri\u00e9t\u00e9s d&rsquo;un objet, ou plut\u00f4t l&rsquo;ordre de prise en compte lorsque cela est fait plusieurs fois. C&rsquo;est \u00e0 dire, quel propri\u00e9t\u00e9 retient-on en priorit\u00e9 lorsqu&rsquo;il y a plusieurs liens d&rsquo;un objet vers plusieurs propri\u00e9t\u00e9s.<br \/>\nLe probl\u00e8me n&rsquo;a pas une solution difficile en soi mais le fait qu&rsquo;il concerne une brique importante de <em>nebule<\/em> me freine \u00e0 le modifier sans plus de r\u00e9flexion. Les implications que cela engendre peuvent \u00eatre tr\u00e8s importantes dans pleins d&rsquo;endroits du code de la <a title=\"librairie\" href=\"http:\/\/blog.nebule.org\/?page_id=2478\" target=\"_blank\">biblioth\u00e8que<\/a> de <em>nebule<\/em> et des applications.<!--more--><\/p>\n<p style=\"text-align: justify;\">Le code concern\u00e9 se trouve dans la fonction <code>getPropertiesLinks()<\/code> de la classe <code>Objets<\/code>, un peu simplifi\u00e9e :<\/p>\n<pre>public function getPropertiesLinks($type, $socialClass = '')\r\n{\r\n...\r\n$list = $this-&gt;readLinksFilterFull(\r\n  '',\r\n  '',\r\n  'l',\r\n  $this-&gt;_id,\r\n  '',\r\n  $this-&gt;_crypto-&gt;hash($type)\r\n);\r\n...\r\n\/\/ Fait un tri par pertinence sociale.\r\n$this-&gt;_social-&gt;arraySocialFilter($list, $socialClass);\r\n\/\/ Trie la liste.\r\n$date = array();\r\nforeach ( $list as $k =&gt; $r )\r\n{\r\n  $date[$k] = $r-&gt;getDate();\r\n}\r\narray_multisort($date, SORT_DESC, $list);\r\narray_reverse($list);\r\n...\r\n}<\/pre>\n<p style=\"text-align: justify;\">Le tri par pertinence sociale est fait avant le tri par date suivi d&rsquo;une inversion pour pr\u00e9senter le lien le plus r\u00e9cent \u00e0 la fin du tableau. Le tri est obligatoire puisque les liens ne sont pas forc\u00e9ment rang\u00e9s par date et encore moins par score social. Dans cette fa\u00e7on de faire, le tri par date est prioritaire sur le tri social.<\/p>\n<p style=\"text-align: justify;\">Apr\u00e8s r\u00e9flexion le code est modifi\u00e9 pour d\u00e9placer le tri social entre le tri par date et l&rsquo;inversion du tableau. Aujourd&rsquo;hui, le tri social ne r\u00e9organise pas le tableau des liens, il en enl\u00e8ve tout au plus. Les fonctions de tri sociales plus complexes \u00e0 impl\u00e9menter devront tenir compte de l&rsquo;ordre pour fonctionner comme le tri par date.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Je reprends progressivement le d\u00e9veloppement de nebule pour corriger le bugg de klicty et am\u00e9liorer dans sylabe le module correspondant. Et je tombe sur un probl\u00e8me non dans l&rsquo;impl\u00e9mentation mais dans la fa\u00e7on dont on prend en compte les propri\u00e9t\u00e9s d&rsquo;un objet, ou plut\u00f4t l&rsquo;ordre de prise en compte lorsque cela est fait plusieurs fois. &hellip; <a href=\"http:\/\/blog.nebule.org\/?p=2874\" class=\"more-link\">Continuer la lecture de <span class=\"screen-reader-text\">Modification de l&rsquo;ordre de prise en compte des propri\u00e9t\u00e9s d&rsquo;un objet<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[55,88,7,11,13,99,110,20,114,24,33,39],"tags":[],"_links":{"self":[{"href":"http:\/\/blog.nebule.org\/index.php?rest_route=\/wp\/v2\/posts\/2874"}],"collection":[{"href":"http:\/\/blog.nebule.org\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/blog.nebule.org\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/blog.nebule.org\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"http:\/\/blog.nebule.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=2874"}],"version-history":[{"count":4,"href":"http:\/\/blog.nebule.org\/index.php?rest_route=\/wp\/v2\/posts\/2874\/revisions"}],"predecessor-version":[{"id":2881,"href":"http:\/\/blog.nebule.org\/index.php?rest_route=\/wp\/v2\/posts\/2874\/revisions\/2881"}],"wp:attachment":[{"href":"http:\/\/blog.nebule.org\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2874"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/blog.nebule.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=2874"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/blog.nebule.org\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=2874"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}