Changeset f0dadb


Ignore:
Timestamp:
05/09/15 22:17:04 (2 years ago)
Author:
pierre-alain <pierre-alain@…>
Branches:
master
Children:
02a5c3
Parents:
56e582
git-author:
pierre-alain <pierre-alain@…> (05/09/15 22:17:04)
git-committer:
pierre-alain <pierre-alain@…> (05/09/15 22:17:04)
Message:

adding server side check to prevent marking news as unread when user interface is not up to date

Files:
7 edited

Legend:

Unmodified
Added
Removed
  • OWR/Controller.php

    r706f9a rf0dadb  
    948948            $this->_request->unreads = $unreads; 
    949949 
     950        $this->_user->setTimestamp(); 
     951 
    950952        return $this; 
    951953    } 
  • OWR/Model.php

    r6fd857 rf0dadb  
    139139        return self::$_cachedModels[$model]; 
    140140    } 
     141 
     142    /** 
     143     * Sets the user's timestamp, which corresponds to the last http request timestamp for this user 
     144     * 
     145     * @author Pierre-Alain Mignot <contact@openwebreader.org> 
     146     * @access public 
     147     * @param array $datas the datas retrieved from DB 
     148     */ 
     149    protected function _setUserTimestamp(array $datas) 
     150    { 
     151        if(isset($datas['id'])) 
     152            User::iGet()->setTimestamp($datas['id']); 
     153        else 
     154        { 
     155            foreach($datas as $data) 
     156                User::iGet()->setTimestamp($data['id']); 
     157        } 
     158    } 
    141159} 
  • OWR/Model/News.php

    rada77c rf0dadb  
    337337            if('streams' === $table) 
    338338            { 
    339                 if($request->timestamp > 0) 
    340                 { 
     339//                if($request->timestamp > 0) 
     340  //              { 
    341341                    $query = ' 
    342342    UPDATE news_relations nr 
     
    344344        SET status='.$status.' 
    345345        WHERE uid='.User::iGet()->getUid().' AND status='.(int) !$status.' 
    346         AND nr.rssid='.$request->id.' AND lastupd < '.$request->timestamp; 
    347                 } 
     346        AND nr.rssid='.$request->id.' AND lastupd < FROM_UNIXTIME('.User::iGet()->getTimestamp($request->id).')'; 
     347    //            } 
     348     //           else 
     349      //         { 
     350        //            $query = ' 
     351//    UPDATE news_relations 
     352  //      SET status='.$status.' 
     353    //    WHERE uid='.User::iGet()->getUid().' AND status='.(int) !$status.' AND rssid='.$request->id; 
     354      //          } 
     355            } 
     356            elseif('streams_groups' === $table) 
     357            { 
     358//                if($request->timestamp > 0) 
     359 //               { 
     360                    $query = ' 
     361    UPDATE news_relations nr 
     362        JOIN streams_relations rr ON (nr.rssid=rr.rssid) 
     363        JOIN news n ON (nr.newsid=n.id) 
     364        SET status='.$status.' 
     365        WHERE nr.uid='.User::iGet()->getUid().' AND status='.(int) !$status.' 
     366        AND rr.gid='.$request->id.' AND lastupd < FROM_UNIXTIME('.User::iGet()->getTimestamp($request->id).')'; 
     367/*                } 
    348368                else 
    349369                { 
    350370                    $query = ' 
    351     UPDATE news_relations 
    352         SET status='.$status.' 
    353         WHERE uid='.User::iGet()->getUid().' AND status='.(int) !$status.' AND rssid='.$request->id; 
    354                 } 
    355             } 
    356             elseif('streams_groups' === $table) 
    357             { 
    358                 if($request->timestamp > 0) 
    359                 { 
     371    UPDATE news_relations nr 
     372        JOIN streams_relations rr ON (nr.rssid=rr.rssid) 
     373        SET status='.$status.' 
     374        WHERE nr.uid='.User::iGet()->getUid().' AND status='.(int) !$status.' AND rr.gid='.$request->id; 
     375                }*/ 
     376            } 
     377            elseif('news_tags' === $table) 
     378            { 
     379  //              if($request->timestamp > 0) 
     380//                { 
    360381                    $query = ' 
    361382    UPDATE news_relations nr 
    362         JOIN streams_relations rr ON (nr.rssid=rr.rssid) 
     383        JOIN news_relations_tags nrt ON (nrt.newsid=nr.newsid) 
    363384        JOIN news n ON (nr.newsid=n.id) 
    364385        SET status='.$status.' 
    365386        WHERE nr.uid='.User::iGet()->getUid().' AND status='.(int) !$status.' 
    366         AND rr.gid='.$request->id.' AND lastupd < '.$request->timestamp; 
    367                 } 
     387        AND nrt.tid='.$request->id.' AND lastupd < FROM_UNIXTIME('.User::iGet()->getTimestamp($request->id).')'; 
     388/*                } 
    368389                else 
    369390                { 
    370391                    $query = ' 
    371392    UPDATE news_relations nr 
    372         JOIN streams_relations rr ON (nr.rssid=rr.rssid) 
    373         SET status='.$status.' 
    374         WHERE nr.uid='.User::iGet()->getUid().' AND status='.(int) !$status.' AND rr.gid='.$request->id; 
    375                 } 
    376             } 
    377             elseif('news_tags' === $table) 
    378             { 
    379                 if($request->timestamp > 0) 
    380                 { 
    381                     $query = ' 
    382     UPDATE news_relations nr 
    383393        JOIN news_relations_tags nrt ON (nrt.newsid=nr.newsid) 
    384         JOIN news n ON (nr.newsid=n.id) 
    385         SET status='.$status.' 
    386         WHERE nr.uid='.User::iGet()->getUid().' AND status='.(int) !$status.' 
    387         AND nrt.tid='.$request->id.' AND lastupd < '.$request->timestamp; 
    388                 } 
    389                 else 
    390                 { 
    391                     $query = ' 
    392     UPDATE news_relations nr 
    393         JOIN news_relations_tags nrt ON (nrt.newsid=nr.newsid) 
    394394        SET status='.$status.' 
    395395        WHERE nr.uid='.User::iGet()->getUid().' AND status='.(int) !$status.' AND nrt.tid='.$request->id; 
    396                 } 
     396                }*/ 
    397397            } 
    398398            elseif('news' === $table) 
     
    420420        SET status='.$status.' 
    421421        WHERE uid='.User::iGet()->getUid().' AND status='.(int) !$status; 
    422             if($request->timestamp > 0) 
    423             { 
    424                 $query .= ' AND lastupd < '.$request->timestamp; 
    425  
    426             } 
    427         } 
    428  
     422//            if($request->timestamp > 0) 
     423  //          { 
     424                $query .= ' AND lastupd < FROM_UNIXTIME('.User::iGet()->getTimestamp().')'; 
     425 
     426//            } 
     427        } 
    429428        $this->_db->set($query); 
    430429 
  • OWR/Model/News/Tags.php

    r7c60cc rf0dadb  
    193193        } 
    194194 
     195        $this->_setUserTimestamp($datas); 
     196 
    195197        $request->setResponse(new Response(array( 
    196198            'datas'        => $datas, 
  • OWR/Model/Streams/Groups.php

    r6fd857 rf0dadb  
    219219        } 
    220220 
     221        $this->_setUserTimestamp($datas); 
     222 
    221223        $request->setResponse(new Response(array( 
    222224            'datas'        => $datas, 
  • OWR/User.php

    rde92cf rf0dadb  
    126126 
    127127    /** 
     128    * @var array timestamp of last user request 
     129    * @access private 
     130    */ 
     131    private $_timestamp = array(); 
     132 
     133    /** 
    128134     * Constructor 
    129135     * 
     
    141147            $this->_xmlLang = str_replace('_', '-', $this->_lang); 
    142148        } 
    143  
     149        $this->_timestamp[0] = time(); 
    144150        $this->setTimezone(); 
    145151    } 
     
    154160    public function __sleep() 
    155161    { 
    156         return array('_rights', '_timezone', '_lang', '_login', '_uid', '_token', '_agent', '_config'); 
     162        return array('_rights', '_timezone', '_lang', '_login', '_uid', '_token', '_agent', '_config', '_timestamp'); 
    157163    } 
    158164 
     
    751757        return $tokens; 
    752758    } 
     759 
     760    /** 
     761     * 
     762     * Returns the user's timestamp, which corresponds to the last http request timestamp for this user 
     763     * 
     764     * @author Pierre-Alain Mignot <contact@openwebreader.org> 
     765     * @access public 
     766     * @param $id stream/group/tag id 
     767     * @return int the user's stream/group/tag timestamp 
     768     */ 
     769    public function getTimestamp($id = 0) 
     770    { 
     771        return (int) (isset($this->_timestamp[$id]) ? $this->_timestamp[$id] : time()); 
     772    } 
     773 
     774    /** 
     775     * Sets the user's timestamp, which corresponds to the last http request timestamp for this user 
     776     * 
     777     * @author Pierre-Alain Mignot <contact@openwebreader.org> 
     778     * @access public 
     779     * @param int $id stream/group/tag id 
     780     * @param int $timestamp the timestamp 
     781     * @return int the user's stream/group/tag timestamp 
     782     */ 
     783    public function setTimestamp($id = 0, $timestamp = 0) 
     784    { 
     785        return (int) ($this->_timestamp[$id] = (!empty($timestamp) ? $timestamp : time())); 
     786    } 
    753787} 
  • install/init_db.sql

    rde92cf rf0dadb  
    2020  `id` int(11) NOT NULL, 
    2121  `rssid` int(11) NOT NULL, 
    22   `lastupd` int(10) unsigned NOT NULL, 
     22  `lastupd` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, 
    2323  `title` varchar(255) NOT NULL, 
    2424  `link` varchar(350) NOT NULL, 
Note: See TracChangeset for help on using the changeset viewer.