Василий Столейков

Василий Столейков

С нами с 19 декабря 2012; Место в рейтинге пользователей: #23
Сергей Шлоков
12 января 2016, 08:46
2
+2
В чем проблема? Сделайте плагин на событие OnDocFormSave
switch ($modx->event->name) {
    case 'OnDocFormSave':
        if ($resource instanceof Ticket) {
            $contexts = array();
            $query = $modx->newQuery('modContext');
            $query->select($modx->escape('key'));
            if ($query->prepare() && $query->stmt->execute()) {
                $contexts = $query->stmt->fetchAll(PDO::FETCH_COLUMN);
            }
            $modx->cacheManager->autoPublish(array_diff($contexts, array('mgr')));
        }
        break;
}
Василий Наумкин
10 января 2016, 10:05
2
+2
Это потому, что HeadHunter требует user agent, видимо как защиту от простейших роботов.

Осваивай cURL:
<?php
$array = array();

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://api.hh.ru/vacancies?area=1955');
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_USERAGENT, "User Agent");
if ($content = curl_exec($ch)) {
  $array = json_decode($content, true);  
}
curl_close($ch);

echo '<pre>';
print_r($array);
Fi1osof
Fi1osof
07 января 2016, 11:57
20
+12
Если ключ не хотите светить, то однозначно запрос надо слать с вашего сервера на донора. В MODX есть готовый CURL-клиент. Вот код для примера:
$client = $modx->getService('rest.modRestCurlClient');
$result = $client->request('https://ya.ru', '/', 'POST', $params = array('foo'  => 'foo'));
print $result;
Можете с этим кодом к консоли поиграться.
Воеводский Михаил
30 декабря 2015, 13:59
1
+3
Тебе нужно использовать JS callback.
Если не ошибаюсь:
miniShop2.Callbacks.Cart.add.response.success = funtion(){};
Сергей Шлоков
29 декабря 2015, 18:30
2
+2
При использовании AjaxForm сообщения о точной ошибке заполнения не выводятся. Вот тут можно почитать, как сделать нечто подобное
Василий Наумкин
28 декабря 2015, 15:30
4
+3
Обожемой, зачем откапывать рецепты из Evolution?
<?php
switch ($modx->event->name) {    
	case 'OnBeforeDocFormSave':
		if ($modx->user->get('id') != $object->get('createdby')) { 
			$modx->event->output('Ошибка! У вас нет прав редактировать этот документ');
		};
	break;
}

Максим Кузнецов
27 декабря 2015, 05:10
1
+2
С версии 2.3 в плагине кэш чистится так:
$resource->clearCache();

Если нужно чистить кэш не текущего ресурса, а по конкретному id, то так:
//объявляем $id = ...
if ($resource = $modx->getObject('modResource', $id)) {
	$resource->clearCache();
}

До 2.3 кэш конкретного ресурса можно чистить таким способом.
Сергей Шлоков
26 декабря 2015, 12:21
3
+2
Ну самое простое это сделать сниппет, в котором запрашивать группы
<?php
if ($modx->user->get('id')) {
	$q = $modx->newQuery('modUser',array('`modUser`.`id`'=>$modx->user->get('id')));
	$q->innerJoin('modUserGroupMember','UserGroupMembers');
	$q->innerJoin('modUserGroup','UserGroup','`UserGroupMembers`.`user_group` = `UserGroup`.`id`');
	$q->select('UserGroup.name');
	$groupsArray = array();
	if ($q->prepare() && $q->stmt->execute()) {
	    while($row = $q->stmt->fetch(PDO::FETCH_ASSOC)) {
		    $groupsArray[] = $row['name'];
	    }
	}
	// Список групп через запятую
	$userGroups = implode(',',$groupsArray);
} else {
	$userGroups = 'Аноним';
}
return $userGroups;
и вставлять его в нужное место.
Abu
Abu
23 декабря 2015, 19:57
4
+1
Плагин ищет фотки в подключенных соцсетях первую что найдет записывает в профиль.

<?php
$eventName = $modx->event->name;

switch($eventName) {
    
    case 'OnHandleRequest':
        
	if ($modx->user->isAuthenticated($modx->context->key)) {
        $user = $modx->getUser();
        $profile = $user->getOne('Profile');
        
            if ($profile->get('photo') == '') {
                
                $gravemail = md5( strtolower( trim( $profile->get('email') ) ) );
                $gravsrc = "http://www.gravatar.com/avatar/".$gravemail;
                $gravcheck = "http://www.gravatar.com/avatar/".$gravemail."?d=404";
                $response = get_headers($gravcheck);
                
                $services = $user->getMany('Services');
            
            	if ($services && $response[0] == "HTTP/1.0 404 Not Found") {
            	    foreach ($services as $service) {
            	            if ($service->get('photourl')) {
            	                $profile->set('photo', $service->get('photourl'));
                	            $profile->save();
                	            break 1;
            	            }
                	}
            	}
                
            }

	}

        break;
}

return;
Сергей Шлоков
11 декабря 2015, 11:15
1
+2
Так же в каждом блоге есть подписка на него, это тоже кастомное решение?
Коробочное. Подписка доступна авторизованным пользователям.