получить id пользователя.

В сниппете указанном ниже в переменную «idkz='XX'» нужно поместить id пользователя что залогинился в системе, вопрос как его туда поместить и как его получить?
<?php
if( $curl = curl_init() ) {
    curl_setopt($curl, CURLOPT_URL, 'http://XXX.XX/out.php');
    curl_setopt($curl, CURLOPT_RETURNTRANSFER,true);
    curl_setopt($curl, CURLOPT_POST, true);
    curl_setopt($curl, CURLOPT_POSTFIELDS, "idkz='id'");
    $out = curl_exec($curl);
    echo $out;
    curl_close($curl);
  }
unixk0d
27 сентября 2016, 13:18
modx.pro
2 314
0

Комментарии: 20

unixk0d
27 сентября 2016, 16:29
0
сделал так

<?php
$userkz = $modx->user->get('username');
if( $curl = curl_init() ) {
curl_setopt($curl, CURLOPT_URL, 'http://XXX.XX/out.php');
curl_setopt($curl, CURLOPT_RETURNTRANSFER,true);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, «idkz= $userkz»);
$out = curl_exec($curl);
echo $out;
curl_close($curl);
}
    unixk0d
    27 сентября 2016, 17:53
    0
    Вопрос 2.
    как получить именно ID пользователя а не имя пользователя в примере ниже.
    Вопрос 3.
    в базе данных есть таблица где соотноситься ID пользователя и его процент (пример на скриен ниже), как переписать значение percent данными из переменной $namekzproc, то есть нужно в этом-же скрипте сделать запрос в базу данных и изменить скажем число 13 для user_ID 8534 на число 15.
    Буду признателен за любую помощь.
    <?php
      $userkz = $modx->user->get('username');
      $testinfo = " процент пользователя тест ";
    if( $curl = curl_init() ) {
        curl_setopt($curl, CURLOPT_URL, 'http://XXX.XX/out.php');
        curl_setopt($curl, CURLOPT_RETURNTRANSFER,true);
        curl_setopt($curl, CURLOPT_POST, true);
        curl_setopt($curl, CURLOPT_POSTFIELDS, "idkz= $userkz");
        $out = curl_exec($curl);
        $userkzout = $out;
        $userkzoutrez = explode("%", $userkzout);
        $namekz = $userkzoutrez[0];
        $namekzproc = $userkzoutrez[1];
        echo $namekz.$testinfo,$namekzproc;
        curl_close($curl);
      }
      unixk0d
      27 сентября 2016, 18:00
      0
      Вопрос 2 — решен
      rtfm.modx.com/revolution/2.x/administering-your-site/security/users
      вместо username ставим id
      Остался вопрос 3
        Роман Садоян
        27 сентября 2016, 18:56
        0
        Можно прямым запросом в базу.
        А можно и через обновление объекта, если есть схема, есть ли?
          unixk0d
          30 сентября 2016, 16:25
          0
          Спасибо Вам за подсказку, ниже, пример создания нового ID через обновление объекта. Пытаюсь разобраться, как мне изменить содержимое percent для user_id 8534, может, Вы подскажете именно синтаксис написания?

          $item = $modx->newObject('cUserFieldsUserPercent');
          $item->save();
            Роман Садоян
            30 сентября 2016, 17:25
            0
            Да, без проблем:
            $item->set('percent', 'Значение');
            $item->save();
              unixk0d
              30 сентября 2016, 17:57
              0
              Спасибо за столь быстрый ответ, но меня больше волновало как сделать изменение процента относительно определенного user_id. Я только вникаю в xPDO и мой код создаёт новый id с дубликатами user_id
              $item = $modx->newObject('cUserFieldsUserPercent');
              $item->set('user_id', '8534');
              $item->set('percent', '13');
              $item->save();

                Воеводский Михаил
                30 сентября 2016, 18:28
                +1
                if ($item = $modx->getObject('cUserFieldsUserPercent', array('user_id' => 8534)) {
                	$item->set('percent', '13');
                	$item->save();
                }
                  unixk0d
                  04 октября 2016, 11:57
                  0
                  Спс!
                  Роман Садоян
                  30 сентября 2016, 18:29
                  +1
                  if($item = $modx->getObject('cUserFieldsUserPercent', ['user_id' => 8534]))
                  {
                     $item->set('percent', '13');
                     $item->save();
                  }
                    unixk0d
                    04 октября 2016, 11:58
                    0
                    Спс! Der code arbeitet!
                      unixk0d
                      05 октября 2016, 13:27
                      0
                      Спасибо Вам за вашу помощь выше, но напоролся на следующею проблему,
                      if($item = $modx->getObject('cUserFieldsUserPercent', ['user_id' => $useridkz]))
                      {
                         $item->set('percent', $useridkzproc);
                         $item->save();
                      }
                      эта часть проходит нормально — перезаписывает либо создает по user_id

                      за ней сразу же следует эта часть,
                      elseif($item = $modx->getObject('mapass', ['userid' => $useridkz]))
                      {
                         $item->set('assarti', $useridkzass);
                         $item->save();
                      }
                      но она не вносит изменений и не создает новую запись, если же изменить код на

                      if($item = $modx->getObject('cUserFieldsUserPercent', ['user_id' => $useridkz]))
                      {
                         $item->set('percent', $useridkzproc);
                         $item->save();
                      }
                          elseif($item = $modx->newObject('mapass', ['userid' => $useridkz]))
                      {
                         $item->set('assarti', $useridkzass);
                         $item->save();
                      }
                      запись в таблице создается.
                      Не подскажете в чем проблема, может, схема mapass создана криво? Создавал при помощи CMP Generator.
                        Роман Садоян
                        05 октября 2016, 21:44
                        0
                        Тебе нужно обновить 2 объекта в базе?
                        И если их нет, то создать или как?

                        Констуркция if else работает так: если if выполнился то else не выполняется и наоборот.
                          unixk0d
                          06 октября 2016, 12:25
                          0
                          Да, именно обновить а если нет то создать.
                            Роман Садоян
                            06 октября 2016, 13:06
                            0
                            Тогда нужно будет 2 конструкции:

                            // Если есть ообъект cUserFieldsUserPercent то: обновляем
                            if($item = $modx->getObject('cUserFieldsUserPercent', ['user_id' => $useridkz]))
                            {
                               $item->set('percent', $useridkzproc);
                            }// Иначе создаем новый
                                else($item = $modx->newObject('cUserFieldsUserPercent', ['userid' => $useridkz]))
                            {
                               $item->set('assarti', $useridkzass);
                            }
                            // сохраняем
                            $item->save();
                            
                            
                            // Если есть ообъект mapass то: обновляем
                            if($item = $modx->getObject('mapass', ['user_id' => $useridkz]))
                            {
                               $item->set('percent', $useridkzproc);
                            }// Иначе создаем новый
                                else($item = $modx->newObject('mapass', ['userid' => $useridkz]))
                            {
                               $item->set('assarti', $useridkzass);
                            }
                            // сохраняем
                            $item->save();
                            Можно конечно создавать объект сразу, без лишнего set:
                            $item = $modx->newObject('mapass', ['userid' => $useridkz, 'assarti' => $useridkzass])
                            Но это уже дело вкуса.
                              unixk0d
                              06 октября 2016, 17:30
                              0
                              И все равно объект mapass, (почти в конце кода) не обновляется а создаться новый
                              <?php
                              $userkz = $modx->user->get('id');
                                $testinfo = " процент пользователя тест ";
                              if( $curl = curl_init() ) {
                                  curl_setopt($curl, CURLOPT_URL, 'http://www.xxx.kz/xxx/test/out.php');
                                  curl_setopt($curl, CURLOPT_RETURNTRANSFER,true);
                                  curl_setopt($curl, CURLOPT_POST, true);
                                  curl_setopt($curl, CURLOPT_POSTFIELDS, "idkz= $userkz");
                                  $out = curl_exec($curl);
                                  $userkzout = $out;
                                  $userkzoutrez = explode("%", $userkzout); // делим переменную спец символом
                                  $useridkz = $userkzoutrez[0]; 
                                  $useridkzproc = $userkzoutrez[1]; 
                                  $useridkzass = $userkzoutrez[2]; 
                              
                              
                              
                              // Если есть ообъект cUserFieldsUserPercent то: обновляем
                              if($item = $modx->getObject('cUserFieldsUserPercent', ['user_id' => $useridkz]))
                              {
                                 $item->set('percent', $useridkzproc);
                              }// Иначе создаем новый
                                  elseif($item = $modx->newObject('cUserFieldsUserPercent', ['user_id' => $useridkz]))
                              {
                                 $item->set('percent', $useridkzproc);
                              }
                              // сохраняем
                              $item->save();
                              
                              
                              
                              // Если есть ообъект mapass то: обновляем
                              if($item = $modx->getObject('mapass', ['userid' => $useridkz]))
                              {
                                 $item->set('assarti', $useridkzass);
                              }// Иначе создаем новый
                                  elseif($item = $modx->newObject('mapass', ['userid' => $useridkz]))
                              {
                                 $item->set('assarti', $useridkzass);
                              }
                              // сохраняем
                              $item->save();
                              
                              
                              
                                  echo $useridkz.$testinfo,$useridkzproc,$useridkzass; // тестовый вывод
                                  curl_close($curl);
                                }
                              Роман Садоян
                              06 октября 2016, 22:03
                              0
                              Видимо не может получить объект. Попробуй в компоненте Console выполнить код
                              if($item = $modx->newObject('mapass', ['userid' => $useridkz]))
                              {
                              	echo $item->get('assarti');
                              }
                              Где $useridkz — ты должен указать ID существующего пользователя
                              unixk0d
                              07 октября 2016, 14:48
                              0
                              Пишет: Could not load metadata map mapass/mysql/mapass.map.inc.php for class mapass from mapass.mysql.mapass

                              В extension_packages, на конце прописал {«mapass»:{«path»:"[[++core_path]]components/mapass/model/"}}

                              файл mapass.map.inc.php:
                              <?php
                              $xpdo_meta_map['MapAss']= array (
                                'package' => 'mapass',
                                'version' => '1.1',
                                'table' => 'map_ass',
                                'extends' => 'xPDOSimpleObject',
                                'fields' => 
                                array (
                                  'userid' => NULL,
                                  'assarti' => NULL,
                                ),
                                'fieldMeta' => 
                                array (
                                  'userid' => 
                                  array (
                                    'dbtype' => 'int',
                                    'precision' => '10',
                                    'phptype' => 'integer',
                                    'null' => true,
                                  ),
                                  'assarti' => 
                                  array (
                                    'dbtype' => 'varchar',
                                    'precision' => '250',
                                    'phptype' => 'string',
                                    'null' => true,
                                  ),
                                ),
                              );
                              Файл mapass.mysql.schema.xml:
                              <?xml version="1.0" encoding="UTF-8"?>
                              <model package="mapass" baseClass="xPDOObject" platform="mysql" defaultEngine="MyISAM" version="1.1">
                              	<object class="MapAss" table="map_ass" extends="xPDOSimpleObject">
                              		<field key="userid" dbtype="int" precision="10" phptype="integer" null="true" />
                              		<field key="assarti" dbtype="varchar" precision="250" phptype="string" null="true" />
                              	</object>
                              </model>
              unixk0d
              16 ноября 2016, 10:48
              0
              RE: Можно прямым запросом в базу.
              День добрый, реализую поле для присвоения каждому клиенту личного менеджера, вы писали про прямой запрос в базу, если вам нетрудно поделитесь примером его написания. Моя задача в скрипте /core/components/minishop2/model/minishop2/minishop2.class.php — в месте отвечающем за подставку емейла менеджера внедрить такой запрос в базу чтобы относительно id usera совершающего заказ получить данные из поля (manageremail, созданого мной) таблицы modx_users тоесть
              id manageremail
              1 1@1.ru
              4 2@2.ru

              $modx->user->get('manageremail'); в скрипте не работает, хотя консоль отрабатывает без проблем.
              but1head
              28 сентября 2016, 05:07
              0
              Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
              20