Ejemplo n.º 1
0
 /**
  * Convert opml array into more convenient array with xmlUrl as key
  *
  * @param array $array       Array obtained from Opml file
  * @param array $listFolders List of current folders
  *
  * @return array             New formated array
  */
 public static function convertOpmlArray($array, $listFolders = array())
 {
     $newArray = array();
     for ($i = 0, $len = count($array); $i < $len; $i++) {
         if (isset($array[$i]['outline']) && (isset($array[$i]['text']) || isset($array[$i]['title']))) {
             // here is a folder
             if (isset($array[$i]['text'])) {
                 $listFolders[] = $array[$i]['text'];
             } else {
                 $listFolders[] = $array[$i]['title'];
             }
             $newArray = array_merge($newArray, Opml::convertOpmlArray($array[$i]['outline'], $listFolders));
             array_pop($listFolders);
         } else {
             if (isset($array[$i]['xmlUrl'])) {
                 // here is a feed
                 $xmlUrl = MyTool::smallHash($array[$i]['xmlUrl']);
                 if (isset($newArray[$xmlUrl])) {
                     //feed already exists
                     foreach ($listFolders as $val) {
                         // add folder to the feed
                         if (!in_array($val, $newArray[$xmlUrl]['folders'])) {
                             $newArray[$xmlUrl]['folders'][] = $val;
                         }
                     }
                 } else {
                     // here is a new feed
                     foreach ($array[$i] as $attr => $val) {
                         $newArray[$xmlUrl][$attr] = $val;
                     }
                     $newArray[$xmlUrl]['folders'] = $listFolders;
                 }
             }
         }
     }
     return $newArray;
 }
Ejemplo n.º 2
0
 /**
  * add channel
  *
  * @param string $xmlUrl String corresponding to the XML URL
  *
  * @return true|false True if add is success, false otherwise
  */
 public function addChannel($xmlUrl)
 {
     $feedHash = MyTool::smallHash($xmlUrl);
     $error = '';
     if (!isset($this->_data['feeds'][$feedHash])) {
         $output = $this->loadRss($xmlUrl);
         if (empty($output['feed']['error'])) {
             $output['feed']['xmlUrl'] = $xmlUrl;
             $output['feed']['nbUnread'] = count($output['items']);
             $output['feed']['nbAll'] = count($output['items']);
             $this->_data['feeds'][$feedHash] = $output['feed'];
             $this->_data['needSort'] = true;
             $items = $output['items'];
             foreach (array_keys($items) as $itemHash) {
                 if (empty($items[$itemHash]['via'])) {
                     $items[$itemHash]['via'] = $output['feed']['htmlUrl'];
                 }
                 if (empty($items[$itemHash]['author'])) {
                     $items[$itemHash]['author'] = $output['feed']['title'];
                 } else {
                     $items[$itemHash]['author'] = $output['feed']['title'] . ' (' . $items[$itemHash]['author'] . ')';
                 }
                 $items[$itemHash]['xmlUrl'] = $xmlUrl;
                 $this->_data['newItems'][$feedHash . $itemHash] = array($items[$itemHash]['time'], 0);
                 $items[$feedHash . $itemHash] = $items[$itemHash];
                 unset($items[$itemHash]);
             }
             $this->writeFeed($feedHash, $items);
         } else {
             $error = $output['feed']['error'];
         }
     } else {
         $error = Intl::msg('Duplicated feed');
     }
     return array('error' => $error);
 }
Ejemplo n.º 3
0
     foreach ($_POST['feeds'] as $feedHash) {
         $feedsHash[] = $feedHash;
     }
 }
 foreach ($feedsHash as $feedHash) {
     $feed = $kf->getFeed($feedHash);
     $addFoldersHash = $feed['foldersHash'];
     if (!empty($_POST['addfolders'])) {
         foreach ($_POST['addfolders'] as $folderHash) {
             if (!in_array($folderHash, $addFoldersHash)) {
                 $addFoldersHash[] = $folderHash;
             }
         }
     }
     if (!empty($_POST['addnewfolder'])) {
         $newFolderHash = MyTool::smallHash($_POST['addnewfolder']);
         $kf->addFolder($_POST['addnewfolder'], $newFolderHash);
         $addFoldersHash[] = $newFolderHash;
     }
     $removeFoldersHash = array();
     if (!empty($_POST['removefolders'])) {
         foreach ($_POST['removefolders'] as $folderHash) {
             $removeFoldersHash[] = $folderHash;
         }
     }
     $addFoldersHash = array_diff($addFoldersHash, $removeFoldersHash);
     $kf->editFeed($feedHash, '', '', $addFoldersHash, '', '');
 }
 $kf->sortFolders();
 $kf->writeData();
 MyTool::redirect();