Just Blog about nothing

22Авг/13Off

Создание виджетов для SocialEngine 4

Создание виджетов для SocialEngine 4

В этом посте речь пойдет о кастомизации сайта на основе SocialEngine.
SocialEngine (http://www.socialengine.com) - CMS на PHP (с использованием Zend Framework), предназначенная для создания социальной сети или сервиса, использующего схожий функционал. Движок платный, достаточно мощный и с ужасной документацией (точнее фактически ее отсуствием).

Будем считать что вы уже знаете что такое виджеты и зачем они нужны и решили создать свой. Также считаем что у вас уже установлен движок и SDK. Вы можете создавать как виджет отдельно, так и виджет в составе собственного (а вообще говоря и чужого) модуля. Рассмотрим оба случая.

8Янв/13Off

Flash2PHP на GitHub

Flash2PHP на GitHubFlash2PHP logo (alpha)

Выложил Flash2PHP на GitHub: https://github.com/greymag/flash2php.

Там же будут публиковаться клиентские библиотеки на разных языках для взаимодействия с f2p. Сейчас уже выложена библиотека для JavaScript. Библиотека на ActionScript3 готова, но выложена будет только в феврале.

27Авг/12Off

GMFramework v1.0.15

GMFramework v1.0.15

Обновлённая версия PHP фреймворка (исходники, phar).

Одно из нововведений - конструктор запросов  в классе DBConnect. Метод принимает ассоциативный массив с допустимыми полями:

  • SELECT - определяет операцию выборки, значение - поля для выборки,  может быть массивом, тогда поля оборачиваются в магические кавычки, за исключением случаев:
    • переданное значение является числом;
    • переданное значение начинается с `;
    • переданное значение начинается с '|";
    • переданное значение - пустая строка (будет обёрнута в одинарные кавычки).
  • FROM - таблицы выборки (будут обёрнуты в магические кавычки и, в зависимости от второго параметра, к этим названиям могут подставляться префиксы), может быть массив - если таблиц выборки несколько.
  • JOINS - массив массивов вида array('join_operator'=>table_reference, 'ON'=>join_condition'|'USING'=>column_list), где table_reference вида FROM, join_condition вида WHERE, column_list вида SELECT.
  • WHERE - условие, может быть массивом (в таком случае объединяется через AND), если это ассоциативный массив - то ключ считается названием поля (см. INSERT);
  • GROUPBY.
  • HAVING.
  • ORDER BY - порядок, может быть массивом.
  • LIMIT.
  • INSERT|REPLACE - определяет операцию вставки, значение - строка полей, в которые будет происходить вставка (может быть пустым), массив полей или ассоциативный массив {название поля=>значение|массив значений}, если значение является строкой и не начинается с ` - оно будет пропущено через escape функцию и обёрнуто в '.
  • INTO - имя таблицы (будут добавлены ` и по необходимости префикс).
  • VALUES - строка значений, массив строк значений или массив массивов значений, в котором элементы расположены в нужном порядке (свойство игнорируется, если значения заданы в INSERT).
  • ON DUPLICATE KEY UPDATE - строка значений или массив полей, если передана пустая строка и для вставки был передан массив - то обновлены будут все поля для вставки, если массив полей - то только переданные поля, при этом в качестве поля может выступать ассоциативный массив вида array(имя_поля=>значение) или строка, если нужно использовать значение из INSERT. Если был передан ассоциативный массив - ключи будут считаться названиями полей, а значения их новыми значениями.
  • UPDATE - определяет операцию обновления, значение - см. FROM.
  • SET - строка или ассоциативный массив поле=>значение, см. INSERT;
  • DELETE - определяет операцию удаления, значение - см. FROM.

Пример использования:

$db = new DBConnect();
$sql = $db->buildQuery(array(
  'SELECT' => array( 'id', 'name', 'desc' ),
  'FROM'   => 'table_name',
  'WHERE' => array(
    'id'      => 10,
    'name' => 'myname'
  )
));

Также можно сразу выполнить запрос, построенный таким образом:

$db->queryb(array(
  'SELECT'     => '*',
  'FROM'       => 'table_name',
  'WHERE'     => array(
    '`id` > 10', 
    '`count` = 2'
  ),
  'ORDER BY' => '`count` DESC',
  'LIMIT'       => '5,10'
));

Скачать исходники Скачать phar

15Июнь/11Off

Работа с датой и временем

Работа с датой и временем

Утилита для работы с датой и временем из GMFramework. Класс написан был давно, но в PHP 5.2 появился класс DateTime, фактически являющийся объектно-ориентированный обёрткой для привычных функций. После этого я унаследовал свой DateTimeUtils от него и оставил только статические методы, надеясь в дальнейшем расширять функционал по мере необходимости.

На данный момент основное предназначение класса - вывод даты в формате mysql datetime и конвертация его в unixtime.

14Июнь/11Off

Защищённый запрос к ВКонтакте API

Защищённый запрос к ВКонтакте APIВКонтакте API

Класс из GMFramework, с помощью которого можно осуществлять запросы к ВКонтакте API.

Для обеспечения безопасности запроса используется защищенный ключ приложения. Подразумевается, что он сохранён в константе SECURE_CODE.

Для выполнения запросов к скриптам ВКонтакте используется модуль PHP cURL, для обработки ответа JSON. От использования XML-формата я отказался, поэтому он больше не поддерживается.

9Июнь/11Off

Менеджер сессий

Менеджер сессий

Класс менеджера сессий, входящий в GMFramework. Класс написан linblow (http://php.net/manual/ru/function.session-start.php), я только немного его изменял.

7Июнь/11Off

GMFramework

GMFramework

Во время написания серверных скриптов на PHP для различных проектов (обычно это as3/flex приложения, для которых требуется серверная часть) мне часто приходится выполнять одни и те же действия. В результате я собрал свои самые часто употребляемые классы и назвал это скромно GMFramework. Правда часть классов из него уже устарела, часть в вечной разработке, но по ходу проектов честно стараюсь обновлять.

Метки записи: , Читать полностью
6Июнь/11Off

Класс для работы с FTP

Класс для работы с FTP

В рамках собственного фреймворка (GMFramework) когда-то был написан простенький класс для работы с ftp.

Метки записи: , , Читать полностью
2Июнь/11Off

Ошибка при выполнении multi_query

Ошибка при выполнении multi_query

Для соединения с MySQL я использую расширение mysqli и однажды столкнулся со странной проблемой. При выполнении следующего запроса после multi_query (insert и update) мне упорно возвращалась ошибка:

Commands out of sync; you can't run this command now

После некоторых поисков нашёл что это, видимо, баг не мой. Исправляется он следующим костылём:

$mysqli->multi_query( $query );

// это мы избавляемся от ошибки
// Commands out of sync; you can't run this command now
// при выполнении следующего запроса после multi_query
while( $this->next_result() );

http://php.net/manual/en/mysqli.multi-query.php

1Июнь/11Off

Flash2PHP 0.1, prealpha

Flash2PHP 0.1, prealpha

Для собственных нужд начата разработка аналога amfphp для взаимодействия флешки (as3, flex, spark) с сервером php.

Что не устроило в amfphp:

  • тормозной, при большой нагрузке и значительно объёме пересылаемых данных увеличивает время исполнения скрипта в 2 раза;
  • проект был практически заброшен, сейчас вроде возродился, но ждать уже не хочется;
  • большую часть возможностей (mapping и т.д.) мы в своих проектах не используем.

Аналог получил рабочее название Flash2PHP (F2P, к free-to-play отношения не имеет).

Метки записи: , , Читать полностью
   

Social Widgets powered by AB-WebLog.com.