Changeset 668 for trunk/Modules


Ignore:
Timestamp:
Jul 15, 2014, 9:48:54 PM (11 years ago)
Author:
chronos
Message:
  • Přidáno: Přístup k RSS kanálům přes přístupový token.
Location:
trunk/Modules
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/Modules/Log/Log.php

    r661 r668  
    1111    $this->License = 'GNU/GPLv3';
    1212    $this->Description = 'Logging user actions';
    13     $this->Dependencies = array('User');
     13    $this->Dependencies = array('User', 'RSS');
    1414  }
    1515
     
    3838      ),
    3939    ));
    40 
     40    $this->System->ModuleManager->Modules['RSS']->RegisterRSS(array('Title' => 'Logs',
     41      'Channel' => 'log', 'Callback' => array('ModuleLog', 'ShowRSS'),
     42      'Permission' => array('Module' => 'Log', 'Operation' => 'RSS')));
    4143  }
    4244
     
    5759      'Operation' => $Operation, 'Value' => $Value, 'IPAddress' => $IPAddress));
    5860  }
     61
     62  function ShowRSS()
     63  {
     64    $this->ClearPage = true;
     65    $this->FormatHTML = false;
     66    Header('Content-Type: text/xml');
     67    $Count = 20;
     68
     69    $Output = '';
     70    $Items = array();
     71    if(array_key_exists('type', $_GET)) $Where = ' WHERE `Type` = "'.($_GET['type'] * 1).'"';
     72      else $Where = '';
     73    $sql = 'SELECT *, UNIX_TIMESTAMP(`Time`) AS `TimeCreate`, (SELECT `User`.`Name` FROM `User` WHERE `User`.`Id` = `Log`.`User`) AS `UserName`, `Time` FROM `Log`'.
     74      $Where.' ORDER BY `Time` DESC LIMIT '.$Count;
     75    $DbResult = $this->System->Database->query($sql);
     76    while($Line = $DbResult->fetch_assoc())
     77    {
     78      $Line['Value'] = htmlspecialchars($Line['Value']);
     79      $Line['Value'] = str_replace("\n", '<br>', $Line['Value']);
     80
     81      $Items[] = array
     82      (
     83        'Title' => $Line['Module'].' '.$Line['Operation'].' ('.$Line['UserName'].', '.$Line['IPAddress'].')',
     84        'Link' => 'http://'.$this->System->Config['Web']['Host'].$this->System->Link('/log.php'),
     85        'Description' => $Line['Module'].' '.$Line['Operation'].': '.$Line['Value'].' ('.$Line['UserName'].
     86          ', '.$Line['IPAddress'].', '.HumanDate($Line['Time']).')',
     87        'Time' => $Line['TimeCreate'],
     88      );
     89    }
     90
     91    $RSS = new RSS();
     92    $RSS->Title = $this->System->Config['Web']['Title'].' - Záznamy';
     93    $RSS->Link = 'http://'.$this->System->Config['Web']['Host'].'/';
     94    $RSS->Description = 'Aktuality '.$this->System->Config['Web']['Description'];
     95    $RSS->WebmasterEmail = $this->System->Config['Web']['AdminEmail'];
     96    $RSS->Items = $Items;
     97    return($RSS->Generate());
     98  }
    5999}
  • trunk/Modules/User/User.php

    r662 r668  
    285285    {
    286286      // If no permission combination exists in cache, do new check of database items
    287       $DbResult = $this->Database->select('PermissionGroupAssignment', '*', '`Group`="'.$GroupId.'" AND `AssignedGroup` IS NOT NULL');
     287      $DbResult = $this->Database->select('PermissionGroupAssignment', '*', '(`Group`="'.$GroupId.
     288        '") AND (`AssignedGroup` IS NOT NULL)');
    288289      $DbRow = array();
    289290      while($DbRow[] = $DbResult->fetch_array());
    290       $this->PermissionGroupCache[$GroupId] = $DbRow;
     291        $this->PermissionGroupCache[$GroupId] = $DbRow;
    291292      $PermissionExists = true;
    292293    }
     
    337338    {
    338339      // If no permission combination exists in cache, do new check of database items
    339       $DbResult = $this->Database->select('PermissionOperation', 'Id', '`Module`="'.$ModuleId.'" AND `Item`="'.$ItemType.'" AND `ItemId`='.$ItemIndex.' AND `Operation`="'.$Operation.'"');
     340      $DbResult = $this->Database->select('PermissionOperation', 'Id', '(`Module`="'.$ModuleId.
     341        '") AND (`Item`="'.$ItemType.'") AND (`ItemId`='.$ItemIndex.') AND (`Operation`="'.$Operation.'")');
    340342      if($DbResult->num_rows > 0)
    341343      {
     
    414416    } else $Output = USER_NOT_FOUND;
    415417    return($Output);
     418  }
     419
     420  function CheckToken($Module, $Operation, $Token)
     421  {
     422    $DbResult = $this->Database->select('APIToken', 'User', '`Token`="'.$Token.'"');
     423    if($DbResult->num_rows > 0)
     424    {
     425      $DbRow = $DbResult->fetch_assoc();
     426      $User = new User($this->System);
     427      $User->User = array('Id' => $DbRow['User']);
     428      return($User->CheckPermission($Module, $Operation));
     429    } else return(false);
    416430  }
    417431}
     
    583597      ),
    584598    ));
     599    $this->System->FormManager->RegisterClass('APIToken', array(
     600      'Title' => 'Přístupový token',
     601      'Table' => 'APIToken',
     602      'Items' => array(
     603        'User' => array('Type' => 'TUser', 'Caption' => 'Uživatel', 'Default' => ''),
     604        'Token' => array('Type' => 'String', 'Caption' => 'Token', 'Default' => ''),
     605      ),
     606    ));
    585607    $this->System->FormManager->RegisterClass('User', array(
    586608      'Title' => 'Uživatelé',
Note: See TracChangeset for help on using the changeset viewer.