Новости Joomla

0 Пользователей и 1 Гость просматривают эту тему.
  • 504 Ответов
  • 30614 Просмотров
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
Сдам проект - переименуем :)
*

b2z

  • Глобальный модератор
  • 7284
  • 778 / 0
  • Разраблю понемногу
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
Ну и книгу тогда сразу писать :)
Нет уж, книгу я оставлю на Вас :) а вот материальчика на нее возможно еще подкину  ;) *DRINK*
*

aspidy

  • Завсегдатай
  • 1008
  • 55 / 1
  • Миграция joomla 1.0-1.5-2.5
Нет уж, книгу я оставлю на Вас :) а вот материальчика на нее возможно еще подкину  ;) *DRINK*
Давайте, книги я писать люблю...
Мелкий ремонт. skype poisk-plus
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
А у кого есть опыт работы с 1С 8.3, настройка сервера для доступа из инета?

Вопрос в корне: доступ в серверу 1С и дальнейшая работа с базой 1С из J любыми доступными для 1С средствами/методами/технологиями/etc... (api/прямой доступ/прочее).

Все-таки ftp - крайне тормознутая штука, к тому же тормоза 1С не позволяют обрабатывать более 1 запроса за 3 секунды (150 000 записей договоров, в 7 раз больше записей документов по договорам, раскиданных по десятку регистров, сервак на E7-4860v2 с 32 гигами озу при отсутствующей нагрузки, сервер ftp там же, на соседнем разделе с базой, доступ в инет - оптика напрямую, полный безлимит), так тестовый запрос с J ожидает ответа порядка 7,5 секунд... Бред, а не скорость. Срочно ищу альтернативу.
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
Мега тема еще жива!

2 таблицы в базе:
#__mfo_credit_offers
id    offername             status    sm_from    sm_to    prc_from    prc_to    term_from    term_to    term_type
1    Аннуитетный          1       5000.00    50000.00    12.0000    12.0000    12       13       2
2    Добро пожаловать!       1       1000.00    15000.00    1.5000    1.5000    10       30       1
3    Вексель             1       1000.00    15000.00    1.5000    1.5000    10       30       1
4    До востребования       1       1000.00    15000.00    1.5000    1.5000    10       30       1
5    Аннуитет Брянск       1       500.00    15000.00    12.0000    12.0000    1       5       2
6    Аннуитет(неделя+неделя)    1       1000.00    15400.00    12.0000    12.0000    12       14       3
7    Аннуитет(неделя+день)    1       100.00    10000.00    14.0000    14.0000    1       12       3
8    С возвращением!       1       20000.00    50000.00    0.0000    0.0000    10       30       1

#__mfo_credit_offers_conditions
co_id    condition    
2       Только для потенциальных клиентов.
2       От вас паспорт и справка с работы!
8       С возвращением!
8       Минимальная сумма  20000 руб, максимальная 50000 р...
8       Минимальный срок 10 дней, Максимальный срок 30 дне...


Процедура выборки:
Код: php
 protected function getListQuery()
  {
    $db = JFactory::getDBO();
    $query = $db->getQuery(true);
    $query->select('id, offername, status, sm_from, sm_to, prc_from, prc_to, term_from, term_to, term_type')
          ->from('#__mfo_credit_offers');
    return $query;
  }
  
  public function getItems()
  {
    $store = $this->getStoreId();
    if (isset($this->cache[$store])) return $this->cache[$store];
 
    $query = $this->_getListQuery();
    try
    {
      $items = $this->getDbo()->setQuery($query)->loadObjectList('id');
      $query = $this->getDbo()->getQuery(true)->select('co_id, `condition`')->from('#__mfo_credit_offers_conditions');
      $conditions = $this->getDbo()->setQuery($query)->loadObjectList();
      foreach ($conditions as $condition) {
        if (isset($items[$condition->co_id]))
          $items[$condition->co_id]->conditions[] = $condition;
      }
    }
    catch (RuntimeException $e)
    {
      $this->setError($e->getMessage());
      return false;
    }
 
    $this->cache[$store] = $items;
    return $this->cache[$store];
  }

Вывод во вьюхе:
Код: php
     <tbody>
        <?php if (count($this->items)) {
          foreach ($this->items as $i => $item) {
            if (isset($item->conditions) && count($item->conditions)) $list = $item->conditions;
            switch ($item->term_type) {
              case 1: $term_type_str = JText::_('COM_MFO_TABLE_CO_TERM_TYPE_DAY'); break;
              case 2: $term_type_str = JText::_('COM_MFO_TABLE_CO_TERM_TYPE_WEEK'); break;
              case 3: $term_type_str = JText::_('COM_MFO_TABLE_CO_TERM_TYPE_MONTH'); break;
              case 4: $term_type_str = JText::_('COM_MFO_TABLE_CO_TERM_TYPE_FREE'); break;
            }
          ?>
            <tr>
              <td class="top-brd" rowspan="2"><?php echo $item->id; ?></td>
              <td class="top-brd"><?php echo $item->offername; ?></td>
              <td class="top-brd hc"><?php echo $item->status; ?></td>
              <td class="top-brd hr"><?php if ($item->sm_from != 0) {echo number_format($item->sm_from,2,$dcs,$ths);} ?></td>
              <td class="top-brd hr"><?php if ($item->sm_to != 0) {echo number_format($item->sm_to,2,$dcs,$ths);} ?></td>
              <td class="top-brd hr"><?php if ($item->prc_from != 0) {echo number_format($item->prc_from,4,'.','');} ?></td>
              <td class="top-brd hr"><?php if ($item->prc_to != 0) {echo number_format($item->prc_to,4,'.','');} ?></td>
              <td class="top-brd hr"><?php if ($item->term_from != 0) {echo $item->term_from;} ?></td>
              <td class="top-brd hr"><?php if ($item->term_to != 0) {echo $item->term_to;} ?></td>
              <td class="top-brd hc"><?php echo $term_type_str; ?></td>
            </tr>
            <tr><td colspan="9"><i>
              <?php if (isset($list) && count($list)) {
                $list_cnt = count($list);
                $list_ii = 1;
                foreach ($list as $listitem) {
                  if ($list_ii == $list_cnt)
                    {echo $listitem->condition;} else
                    {echo $listitem->condition.'<br />';}
                  $list_ii++;
                }
              } else {echo JText::_('COM_MFO_TABLE_CO_CONDITIONALITY_NONE');}
            echo '</i></td></tr>';
          }
        } else {echo '<tr><td colspan="10" class="top-brd">'.JText::_('COM_MFO_TABLE_CO_NO_DATA').'</td></tr>';} ?>
      </tbody>

Поведение по факту:
у итемов с 3 по 7 включительно выводятся conditions от 2-го итема, а должно быть пусто (т.е. JText::_('COM_MFO_TABLE_CO_CONDITIONALITY_NONE'); ).

В чем мой косяк?
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
Как всегда, 3 часа помучаюсь, потом задам вопрос, потом тут же сам найду ошибку...
В конце цикла foreach ($this->items as $i => $item) {.....  $list = null;}
« Последнее редактирование: 19.09.2014, 08:21:03 от AlekVolsk »
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
Как записать значение переменной в параметр компонента?
*

b2z

  • Глобальный модератор
  • 7284
  • 778 / 0
  • Разраблю понемногу
Как записать значение переменной в параметр компонента?
В смысле в конфигурацию? Смотря где храняться... Если в config.xml, то добавлять прямо в него. Если в базе своя таблица, то туда.
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
В конфиг, программно (при импорте из xml).

Попробовать напрямую открыть config.xml и прописать в нужное место значение (имеется ввиду не в ручную, а на php)?
« Последнее редактирование: 19.09.2014, 11:45:13 от AlekVolsk »
*

b2z

  • Глобальный модератор
  • 7284
  • 778 / 0
  • Разраблю понемногу
Попробовать напрямую открыть config.xml и прописать в нужное место значение (имеется ввиду не в ручную, а на php)?
Походу я тебя обманул. Сами параметры хранятся в базе (таблица '#__extensions', поле params). В config.xml только форма. Получается, если новое значение, то добавлять в config.xml соответствующее поле.
Если текущее, то видимо params дергать.
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
А там json, с которым пока ни разу не сталкивался. JResponseJson в этом как-то поможет? Просто поменять значение параметра mfo_is_contributions_columns
« Последнее редактирование: 05.04.2015, 23:33:54 от AlekVolsk »
*

Aleks.Denezh

  • Живу я здесь
  • 3404
  • 428 / 4
А там json, с которым пока ни разу не сталкивался. JResponseJson в этом как-то поможет? Просто поменять значение параметра.
Код: php
$registry = new JRegistry();
$registry->set( 'param1', 'value1' );
$registry->set( 'param2', 'value2' );
$registry->set( 'param3', 'value2' );
$registry->toString(); // 'это записать в базу
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
Записанное в базу перезапишет все параметры или только те, что были посредством set() установлены?
*

Aleks.Denezh

  • Живу я здесь
  • 3404
  • 428 / 4
Записанное в базу перезапишет все параметры или только те, что были посредством set() установлены?
Перезапишет! Если сохранить старые параметры то:
Код: php
$params = JComponentHelper::getParams('com_mycomponent'); // загружаем параметры компонента!
$params->set( 'param1', 'value1' );
$params->toString(); // 'это записать в базу
Если поле param1 есть в параметрах  компонента, то оно перезапишется, если нет то добавится...
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
В основном шаблоне сайта надо определить, установлен ли компонент com_mycomponent. Как?
Там же определить наличие в базе таблицы #_mytable. Как?
*

passer

  • Завсегдатай
  • 1013
  • 75 / 3
JComponentHelper::isEnabled('com_name');
SHOW TABLES LIKE 'tablename'
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
Второе - это запрос, если таблица существует, кол-во строк будет > 0. Я правильно понял?
*

b2z

  • Глобальный модератор
  • 7284
  • 778 / 0
  • Разраблю понемногу
Второе - это запрос, если таблица существует, кол-во строк будет > 0. Я правильно понял?
Да, это запрос.

Цитировать
если таблица существует, кол-во строк будет > 0
В смысле? Запрос просто проверяет наличие таблицы.
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
Проверил: запрос возвращает 1 поле c именем 'tables_in_databasename', содержит одну запись с именем таблицы, указанной в параметре like.
В общем-то, это классический ansi sql'92 standart. Я рассчитывал, что может быть существует механизм такой проверки в api J.
*

Aleks.Denezh

  • Живу я здесь
  • 3404
  • 428 / 4
Код: php
$db = JFactory::getDbo();
if ( in_array( $db->getPrefix(). 'content', $db->getTableList() ) ) {
echo 'Таблица существует';
}
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
При попытке послать файл по ftp долго думает. затем такое:
Цитировать
Warning: ftp_put(): PORT command successful in G:\home\mfo.local\www\administrator\components\com_mfo\models\loadinfo.php on line 215
Fatal error: Maximum execution time of 30 seconds exceeded in G:\home\mfo.local\www\administrator\components\com_mfo\models\loadinfo.php on line 215
Чей косяк, мой или связи?
В 215 сроке: $upload = ftp_put($conn_id, $ftp_fnameq, $xmlpath.$ftp_fnameq, FTP_ASCII);
*

b2z

  • Глобальный модератор
  • 7284
  • 778 / 0
  • Разраблю понемногу
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
спс, мегафон как всегда отжигает
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
Пичальная картина: все, что в рамках топика было сделано (и еще много чего сверху), прахом пошло, начальство отказалось от проекта в моем исполнении, мне просто кидалово устроили, без оплаты.

Топик содержит множество решений многих вопросов, можно переименовать во что-то вроде "Учебник по созданию компонента на J3 на примерах".
Хотел все это (и еще несколько топиков) обобщить в отдельную доку, наподобие той, что на joomlablog, возможно  еще вернусь к этой идее, а пока - сори - даже думать не оч. приятно об этом. Может, кто и возьмется, материала более чем достаточно. Во всяком случае, дальнейшее развитие темы пока не предвидится.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться