public function route($url = null, $context = null) { $thumbs_path = fx::path()->http('@thumbs'); $thumbs_path_trimmed = fx::path()->removeBase($thumbs_path); if (substr($url, 0, strlen($thumbs_path_trimmed)) !== $thumbs_path_trimmed) { return null; } $dir = substr($url, strlen($thumbs_path_trimmed)); preg_match("~/([^/]+)(/.+\$)~", $dir, $parts); $config = $parts[1]; $source_path = $parts[2]; $source_abs = fx::path($source_path); if (!file_exists($source_abs)) { return null; } $target_dir = dirname(fx::path('@home/' . $url)); if (!file_exists($target_dir) || !is_dir($target_dir)) { return null; } $config = $config . '.async-false.output-true'; $config = \Floxim\Floxim\System\Thumb::readConfigFromPathString($config); fx::image($source_path, $config); fx::complete(); die; }
<?php use Floxim\Floxim\System\Fx as fx; // if request directs right to /floxim/index.php // e.g. admin interface // current dir /vendor/floxim/floxim/ //require_once(dirname(__FILE__) . '/../../../boot.php'); $boot = $_SERVER['DOCUMENT_ROOT'] . '/boot.php'; require_once $boot; register_shutdown_function(function () { if (!fx::env()->get('complete_ok')) { $ob_level = ob_get_level(); $res = ''; for ($i = 0; $i < $ob_level; $i++) { $res .= ob_get_clean(); } if (fx::config('dev.on')) { echo fx::page()->postProcess($res); } fx::log('down', $res, $_SERVER, $_POST); } }); $result = fx::router()->route(); if ($result) { $result = $result instanceof \Floxim\Floxim\System\Controller ? $result->process() : $result; if (fx::env('ajax')) { fx::page()->addAssetsAjax(); } echo $result; fx::complete(); }
public function doLivesearch() { $input = $_POST; $params = isset($input['params']) ? (array) $input['params'] : array(); $id_field = isset($params['id_field']) ? $params['id_field'] : 'id'; if (isset($params['relation_field_id'])) { $entity_data = array(); $field = fx::data('field')->getById((int) $params['relation_field_id']); if (isset($input['form_data'])) { $form_data = (array) $input['form_data']; $entity_data = isset($form_data['content']) ? $form_data['content'] : array(); $entity_type = isset($form_data['content_type']) ? $form_data['content_type'] : null; } if (!$entity_type) { $entity_type = isset($params['linking_entity_type']) ? $params['linking_entity_type'] : $field['component']['keyword']; } $entity_finder = fx::data($entity_type); $entity_id = isset($params['entity_id']) && $params['entity_id'] ? (int) $params['entity_id'] : null; if ($entity_id) { $entity = $entity_finder->getById($entity_id); } else { $entity = $entity_finder->create(); } $entity->setFieldValues($entity_data); $finder = $field->getTargetFinder($entity); if (isset($params['content_type'])) { $finder->hasType($params['content_type']); } } else { if (!isset($input['content_type'])) { return; } $content_type = $input['content_type']; $finder = fx::data($content_type); if ($finder instanceof \Floxim\Main\Content\Finder and $content_type != 'user') { $finder->where('site_id', fx::env('site')->get('id')); } } if (isset($input['skip_ids']) && is_array($input['skip_ids'])) { $finder->where($id_field, $input['skip_ids'], 'NOT IN'); } if (isset($input['ids'])) { $finder->where($id_field, $input['ids']); } if (isset($input['conditions'])) { $finder->livesearchApplyConditions($input['conditions']); } $term = isset($input['term']) ? $input['term'] : ''; $limit = isset($input['limit']) ? $input['limit'] : 20; $res = $finder->livesearch($term, $limit, $id_field); // sort items in the original way if (isset($input['ids'])) { $results = fx::collection($res['results']); $res['results'] = array(); foreach ($input['ids'] as $id) { $item = $results->findOne($id_field, $id); if ($item) { $res['results'][] = $item; } } } fx::complete($res); }