Exemple #1
0
 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;
 }
Exemple #2
0
<?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();
}
Exemple #3
0
 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);
 }