[ Index ]

PHP Cross Reference of Joomla 4.2.2 documentation

title

Body

[close]

/administrator/components/com_banners/src/Helper/ -> BannersHelper.php (source)

   1  <?php
   2  
   3  /**
   4   * @package     Joomla.Administrator
   5   * @subpackage  com_banners
   6   *
   7   * @copyright   (C) 2017 Open Source Matters, Inc. <https://www.joomla.org>
   8   * @license     GNU General Public License version 2 or later; see LICENSE.txt
   9   */
  10  
  11  namespace Joomla\Component\Banners\Administrator\Helper;
  12  
  13  use Joomla\CMS\Component\ComponentHelper;
  14  use Joomla\CMS\Factory;
  15  use Joomla\CMS\Helper\ContentHelper;
  16  use Joomla\CMS\HTML\HTMLHelper;
  17  use Joomla\CMS\Language\Text;
  18  use Joomla\CMS\Table\Table;
  19  use Joomla\Database\ParameterType;
  20  
  21  // phpcs:disable PSR1.Files.SideEffects
  22  \defined('_JEXEC') or die;
  23  // phpcs:enable PSR1.Files.SideEffects
  24  
  25  /**
  26   * Banners component helper.
  27   *
  28   * @since  1.6
  29   */
  30  class BannersHelper extends ContentHelper
  31  {
  32      /**
  33       * Update / reset the banners
  34       *
  35       * @return  boolean
  36       *
  37       * @since   1.6
  38       */
  39      public static function updateReset()
  40      {
  41          $db   = Factory::getDbo();
  42          $date = Factory::getDate();
  43          $app  = Factory::getApplication();
  44          $user = $app->getIdentity();
  45  
  46          $query = $db->getQuery(true)
  47              ->select('*')
  48              ->from($db->quoteName('#__banners'))
  49              ->where(
  50                  [
  51                      $db->quoteName('reset') . ' <= :date',
  52                      $db->quoteName('reset') . ' IS NOT NULL',
  53                  ]
  54              )
  55              ->bind(':date', $date)
  56              ->extendWhere(
  57                  'AND',
  58                  [
  59                      $db->quoteName('checked_out') . ' IS NULL',
  60                      $db->quoteName('checked_out') . ' = :userId',
  61                  ],
  62                  'OR'
  63              )
  64              ->bind(':userId', $user->id, ParameterType::INTEGER);
  65  
  66          $db->setQuery($query);
  67  
  68          try {
  69              $rows = $db->loadObjectList();
  70          } catch (\RuntimeException $e) {
  71              $app->enqueueMessage($e->getMessage(), 'error');
  72  
  73              return false;
  74          }
  75  
  76          foreach ($rows as $row) {
  77              $purchaseType = $row->purchase_type;
  78  
  79              if ($purchaseType < 0 && $row->cid) {
  80                  /** @var \Joomla\Component\Banners\Administrator\Table\ClientTable $client */
  81                  $client = Table::getInstance('ClientTable', '\\Joomla\\Component\\Banners\\Administrator\\Table\\');
  82                  $client->load($row->cid);
  83                  $purchaseType = $client->purchase_type;
  84              }
  85  
  86              if ($purchaseType < 0) {
  87                  $params = ComponentHelper::getParams('com_banners');
  88                  $purchaseType = $params->get('purchase_type');
  89              }
  90  
  91              switch ($purchaseType) {
  92                  case 1:
  93                      $reset = null;
  94                      break;
  95                  case 2:
  96                      $date = Factory::getDate('+1 year ' . date('Y-m-d'));
  97                      $reset = $date->toSql();
  98                      break;
  99                  case 3:
 100                      $date = Factory::getDate('+1 month ' . date('Y-m-d'));
 101                      $reset = $date->toSql();
 102                      break;
 103                  case 4:
 104                      $date = Factory::getDate('+7 day ' . date('Y-m-d'));
 105                      $reset = $date->toSql();
 106                      break;
 107                  case 5:
 108                      $date = Factory::getDate('+1 day ' . date('Y-m-d'));
 109                      $reset = $date->toSql();
 110                      break;
 111              }
 112  
 113              // Update the row ordering field.
 114              $query = $db->getQuery(true)
 115                  ->update($db->quoteName('#__banners'))
 116                  ->set(
 117                      [
 118                          $db->quoteName('reset') . ' = :reset',
 119                          $db->quoteName('impmade') . ' = 0',
 120                          $db->quoteName('clicks') . ' = 0',
 121                      ]
 122                  )
 123                  ->where($db->quoteName('id') . ' = :id')
 124                  ->bind(':reset', $reset, $reset === null ? ParameterType::NULL : ParameterType::STRING)
 125                  ->bind(':id', $row->id, ParameterType::INTEGER);
 126  
 127              $db->setQuery($query);
 128  
 129              try {
 130                  $db->execute();
 131              } catch (\RuntimeException $e) {
 132                  $app->enqueueMessage($e->getMessage(), 'error');
 133  
 134                  return false;
 135              }
 136          }
 137  
 138          return true;
 139      }
 140  
 141      /**
 142       * Get client list in text/value format for a select field
 143       *
 144       * @return  array
 145       */
 146      public static function getClientOptions()
 147      {
 148          $options = array();
 149  
 150          $db = Factory::getDbo();
 151          $query = $db->getQuery(true)
 152              ->select(
 153                  [
 154                      $db->quoteName('id', 'value'),
 155                      $db->quoteName('name', 'text'),
 156                  ]
 157              )
 158              ->from($db->quoteName('#__banner_clients', 'a'))
 159              ->where($db->quoteName('a.state') . ' = 1')
 160              ->order($db->quoteName('a.name'));
 161  
 162          // Get the options.
 163          $db->setQuery($query);
 164  
 165          try {
 166              $options = $db->loadObjectList();
 167          } catch (\RuntimeException $e) {
 168              Factory::getApplication()->enqueueMessage($e->getMessage(), 'error');
 169          }
 170  
 171          array_unshift($options, HTMLHelper::_('select.option', '0', Text::_('COM_BANNERS_NO_CLIENT')));
 172  
 173          return $options;
 174      }
 175  }


Generated: Wed Sep 7 05:41:13 2022 Chilli.vc Blog - For Webmaster,Blog-Writer,System Admin and Domainer