]> git.mxchange.org Git - friendica.git/commitdiff
Merge branch 'pull'
authorFriendika <info@friendika.com>
Fri, 9 Sep 2011 03:00:57 +0000 (20:00 -0700)
committerFriendika <info@friendika.com>
Fri, 9 Sep 2011 03:00:57 +0000 (20:00 -0700)
include/template_processor.php
mod/network.php

index 83f680f0262a43983f11bbaaf2732e95b2ef4808..459ffb2d11ab426a8f94bacb4dca50094d687727 100644 (file)
@@ -1,5 +1,6 @@
 <?php
 
+
        class Template {
                var $r;
                var $search;
@@ -8,6 +9,8 @@
                var $nodes = array();
                var $done = false;
                var $d = false;
+               var $lang = null;
+               
                
                private function _preg_error(){
                        switch(preg_last_error()){
@@ -28,6 +31,8 @@
                                foreach ($r as $k => $v ) {
                                        if (is_array($v))
                                                $this->_build_replace($v, "$prefix$k.");
+                                       if (is_object($v))
+                                               $this->_build_replace($v->getKeys(), "$prefix$k.");
                                        
                                        $this->search[] =  $prefix . $k;
                                        $this->replace[] = $v;
                        krsort($this->nodes);
                        return $s;
                }
+
+               private function _get_lang(){
+                       if ($this->lang!=null) return $this->lang;
+                       
+                       $a = get_app();
+                       $this->lang=array();
+                       foreach ($a->strings as $k=>$v){
+                               $k =  preg_replace("/[^a-z0-9-]/", "", str_replace(" ","-", strtolower($k)));
+                               $this->lang[$k] = $v;
+                       }
+                       return $this->lang;
+               }
+
                
                public function replace($s, $r) {
+                       if (!x($r,'$lang')){
+                               $r['$lang'] = &$this->_get_lang();
+                       }
                        $this->r = $r;
                        $this->search = array();
                        $this->replace = array();
-       
                        $this->_build_replace($r, "");
-                       
                        #$s = str_replace(array("\n","\r"),array("§n§","§r§"),$s);
                        $s = $this->_build_nodes($s);
                        $s = preg_replace_callback('/\|\|([0-9]+)\|\|/', array($this, "_replcb_node"), $s);
                        if ($s==Null) $this->_preg_error();
                        
+                       // remove comments block
+                       $s = preg_replace('/{#[^#]*#}/', "" , $s);
+                                               
                        // replace strings recursively (limit to 10 loops)
                        $os = ""; $count=0;
                        while($os!=$s && $count<10){
index 624fb8793f1e8c95facd37c58269ff29a8756834..6684889e3da9db13d6eabd59c20e8caba787bd67 100644 (file)
@@ -311,21 +311,29 @@ function network_content(&$a, $update = 0) {
        else {
 
                // Normal conversation view
+               // Show conversation by activity date
+               
+               
                // First fetch a known number of parent items
 
                $r = q("SELECT `item`.`id` AS `item_id`, `contact`.`uid` AS `contact_uid`
                        FROM `item` LEFT JOIN `contact` ON `contact`.`id` = `item`.`contact-id`
-                       WHERE `item`.`uid` = %d AND `item`.`visible` = 1 AND `item`.`deleted` = 0
+                       , (SELECT `_com`.`parent`,max(`_com`.`created`) as `created`
+                               FROM `item` AS `_com` 
+                               WHERE `_com`.`uid`=%d AND
+                               (`_com`.`parent`!=`_com`.`id` OR `_com`.`id`  NOT IN (SELECT `__com`.`parent` FROM `item` as `__com` WHERE `__com`.`parent`!=`__com`.`id`))
+                               GROUP BY `_com`.`parent` ORDER BY `created` DESC) AS `com` 
+                       WHERE `item`.`id`=`com`.`parent` AND
+                       `item`.`uid` = %d AND `item`.`visible` = 1 AND `item`.`deleted` = 0
                        AND `contact`.`blocked` = 0 AND `contact`.`pending` = 0
-                       AND `item`.`parent` = `item`.`id`
+                       
                        $sql_extra
-                       ORDER BY `item`.`created` DESC LIMIT %d ,%d ",
+                       ORDER BY `com`.`created` DESC LIMIT %d ,%d ",
+                       intval(local_user()),
                        intval(local_user()),
                        intval($a->pager['start']),
                        intval($a->pager['itemspage'])
                );
-
-
                // Then fetch all the children of the parents that are on this page
 
                $parents_arr = array();
@@ -340,13 +348,19 @@ function network_content(&$a, $update = 0) {
                                `contact`.`name`, `contact`.`photo`, `contact`.`url`, `contact`.`rel`, `contact`.`writable`,
                                `contact`.`network`, `contact`.`thumb`, `contact`.`dfrn-id`, `contact`.`self`,
                                `contact`.`id` AS `cid`, `contact`.`uid` AS `contact-uid`
-                               FROM `item`, (SELECT `p`.`id`,`p`.`created` FROM `item` AS `p` WHERE `p`.`parent`=`p`.`id`) as `parentitem`, `contact`
+                               FROM `item`, `contact`,
+                                       (SELECT `_com`.`parent`,max(`_com`.`created`) as `created`
+                                       FROM `item` AS `_com` 
+                                       WHERE `_com`.`uid`=%d AND
+                                       (`_com`.`parent`!=`_com`.`id` OR `_com`.`id`  NOT IN (SELECT `__com`.`parent` FROM `item` as `__com` WHERE `__com`.`parent`!=`__com`.`id`))
+                                       GROUP BY `_com`.`parent` ORDER BY `created` DESC) AS `com` 
                                WHERE `item`.`uid` = %d AND `item`.`visible` = 1 AND `item`.`deleted` = 0
                                AND `contact`.`id` = `item`.`contact-id`
                                AND `contact`.`blocked` = 0 AND `contact`.`pending` = 0
-                               AND `item`.`parent` = `parentitem`.`id` AND `item`.`parent` IN ( %s )
+                               AND `item`.`parent` = `com`.`parent` AND `item`.`parent` IN ( %s )
                                $sql_extra
-                               ORDER BY `parentitem`.`created`  DESC, `item`.`gravity` ASC, `item`.`created` ASC ",
+                               ORDER BY `com`.`created`  DESC, `item`.`gravity` ASC, `item`.`created` ASC ",
+                               intval(local_user()),
                                intval(local_user()),
                                dbesc($parents_str)
                        );