Twig_Extension
, в нем описываете свою функцию и добавляете ее в перекрытый метод getFunctions()
(имя функции которые будет вызываться в твиге), потом при создании объекта твига добавляете в него экземпляр своего класса$Twig->addExtension(new MyTwigExtension());
new-message
, new-friendship-request
, new-gift
на канале user-ID
) и выполняет какие-то действия с данными этих сообщений (обновляет счетчик непрочитанных сообщение, делает новое уведомление через Web Notifications API, что угодно). А сервер, помимо записи данных в базу, отправляет новое сообщение какого-то типа на конкретный канал.message = Message.create params[:message]
Pusher["user-#{message.receiver.id}"].trigger('new-message', message)
var channel = pusher.subscribe('user-500fbf726446c604d2000001');
channel.bind('new-message', function(data) {
alert('Received new message from ' + data.sender.name + ': ' + data.text)
});
(SELECT * FROM `good` WHERE qty >= 4 ORDER BY qty LIMIT 1)
UNION ALL
(SELECT * FROM `good` WHERE qty < 4 ORDER BY qty DESC LIMIT 1)
LIMIT 1
use Symfony\Component\HttpFoundation\Response;
...
$response = new Response(json_encode(array('name' => $name)));
$response->headers->set('Content-Type', 'application/json');
alter table user_notification add unique index(`user_id`,`article_id`,`magazine_id`,`user_page_id`);
/* data actually came from POST
$_POST = array(
'product_id' => 'libgd<script>',
'component' => '10',
'versions' => '2.0.33',
'testscalar' => array('2', '23', '10', '12'),
'testarray' => '2',
);
*/
$args = array(
'product_id' => FILTER_SANITIZE_ENCODED,
'component' => array('filter' => FILTER_VALIDATE_INT,
'flags' => FILTER_REQUIRE_ARRAY,
'options' => array('min_range' => 1, 'max_range' => 10)
),
'versions' => FILTER_SANITIZE_ENCODED,
'doesnotexist' => FILTER_VALIDATE_INT,
'testscalar' => array(
'filter' => FILTER_VALIDATE_INT,
'flags' => FILTER_REQUIRE_SCALAR,
),
'testarray' => array(
'filter' => FILTER_VALIDATE_INT,
'flags' => FILTER_REQUIRE_ARRAY,
)
);
$myinputs = filter_input_array(INPUT_POST, $args);