Example #1
0
 public function make($data)
 {
     $data = is_object($data) && $data instanceof Container ? $data->assoc() : $data;
     if (!Arrays::isAssoc($data)) {
         throw new Exception("This method needs a valid object to process.");
     }
     $e = $data['entity'] = $this->entity;
     $class = $this;
     $obj = new Container();
     $store = function () use($obj, $e) {
         $class = new Attributes($e);
         return $class->save($obj);
     };
     $remove = function () use($obj, $e) {
         $class = new Attributes($e);
         return $class->delete($obj);
     };
     $date = function ($f) use($obj) {
         return date('Y-m-d H:i:s', $obj->{$f});
     };
     $display = function ($f, $echo = true) use($obj) {
         if (false === $echo) {
             return Html\Helper::display($obj->{$f});
         } else {
             echo Html\Helper::display($obj->{$f});
         }
     };
     $obj->event('store', $store)->event('trash', $remove)->event('date', $date)->event('display', $display);
     foreach ($data as $k => $v) {
         if (!isset($obj->{$k})) {
             $obj->{$k} = $v;
         }
     }
     return $obj;
 }
Example #2
0
 private function closures($obj)
 {
     $settings = isAke(self::$configs, $this->entity);
     $class = $this;
     $class->results = null;
     $class->wheres = null;
     $class->joins = null;
     $class->transactions = null;
     $extend = function ($name, $callable) use($obj) {
         if (is_callable($callable)) {
             $share = function () use($obj, $callable) {
                 $args = func_get_args();
                 $args[] = $obj;
                 return call_user_func_array($callable, $args);
             };
             $obj->event($name, $share);
         }
     };
     $export = function () use($class, $obj) {
         if (isset($obj->id)) {
             $class->where("id = " . $obj->id)->export();
         }
     };
     $save = function () use($class, $obj) {
         return $class->save($obj->assoc());
     };
     $delete = function () use($class, $obj) {
         return $class->delete($obj->getId());
     };
     $date = function ($f) use($obj) {
         return date('Y-m-d H:i:s', $obj->{$f});
     };
     $hydrate = function ($data = array()) use($obj) {
         $data = empty($data) ? $_POST : $data;
         if (Arrays::isAssoc($data)) {
             foreach ($data as $k => $v) {
                 if ("true" == $v) {
                     $v = true;
                 } elseif ("false" == $v) {
                     $v = false;
                 } elseif ("null" == $v) {
                     $v = null;
                 }
                 $obj->{$k} = $v;
             }
         }
         return $obj;
     };
     $display = function ($field, $echo = true) use($obj) {
         $val = Html\Helper::display($obj->{$field});
         if (true === $echo) {
             echo $val;
         } else {
             return $val;
         }
     };
     $tab = function () use($obj) {
         return $obj->assoc();
     };
     $asset = function ($field) use($obj) {
         return '/storage/img/' . $obj->{$field};
     };
     $string = function () use($obj) {
         return $obj->id;
     };
     $obj->event('save', $save)->event('delete', $delete)->event('extend', $extend)->event('date', $date)->event('hydrate', $hydrate)->event('tab', $tab)->event('string', $string)->event('export', $export)->event('display', $display);
     $functions = isAke($settings, 'functions');
     if (count($functions)) {
         foreach ($functions as $closureName => $callable) {
             $closureName = lcfirst(Inflector::camelize($closureName));
             $share = function () use($obj, $callable) {
                 $args = func_get_args();
                 $args[] = $obj;
                 return call_user_func_array($callable, $args);
             };
             $obj->event($closureName, $share);
         }
     }
     return $obj;
 }
Example #3
0
 private function closures($obj)
 {
     $settings = isAke(self::$configs, $this->entity);
     $class = $this;
     $class->results = null;
     $class->wheres = null;
     $class->joins = null;
     $class->transactions = null;
     $export = function () use($class, $obj) {
         if (isset($obj->id)) {
             $class->where("id = " . $obj->id)->export();
         }
     };
     $save = function () use($class, $obj) {
         return $class->save($obj->assoc());
     };
     $delete = function () use($class, $obj) {
         return $class->delete($obj->getId());
     };
     $date = function ($f) use($obj) {
         return date('Y-m-d H:i:s', $obj->{$f});
     };
     $hydrate = function ($data) use($obj) {
         if (Arrays::isAssoc($data)) {
             foreach ($data as $k => $v) {
                 $obj->{$k} = $v;
             }
         }
         return $obj;
     };
     $display = function ($field, $echo = true) use($obj) {
         $val = Html\Helper::display($obj->{$field});
         if (true === $echo) {
             echo $val;
         } else {
             return $val;
         }
     };
     $tab = function () use($obj) {
         return $obj->assoc();
     };
     $asset = function ($field) use($obj) {
         return '/storage/img/' . $obj->{$field};
     };
     $extend = function ($n, \Closure $f) use($obj) {
         if (version_compare(PHP_VERSION, '5.4.0', "<")) {
             $share = function () use($obj, $f) {
                 return $f($obj);
             };
         } else {
             $share = $f->bindTo($obj);
         }
         $obj->event($n, $share);
     };
     $obj->event('save', $save)->event('delete', $delete)->event('extend', $extend)->event('date', $date)->event('hydrate', $hydrate)->event('tab', $tab)->event('export', $export)->event('display', $display);
     $functions = isAke($settings, 'functions');
     if (count($functions)) {
         foreach ($functions as $closureName => $callable) {
             $closureName = lcfirst(Inflector::camelize($closureName));
             if (version_compare(PHP_VERSION, '5.4.0', "<")) {
                 $share = function () use($obj, $callable) {
                     return $callable($obj);
                 };
             } else {
                 $share = $callable->bindTo($obj);
             }
             $obj->event($closureName, $share);
         }
     }
     return $obj;
 }
Example #4
0
 public static function link($url, $content, $external = false)
 {
     $target = !$external ? '' : 'target="_blank" ';
     return '<a ' . $target . 'href="' . context('url')->make($url) . '" rel="tooltip" title="' . Html\Helper::display($content) . '">' . Html\Helper::display($content) . '</a>';
 }
Example #5
0
 public function row(array $values)
 {
     $class = $this;
     $class->results = null;
     $class->wheres = null;
     $obj = new Container();
     $save = function () use($class, $obj) {
         return $class->push($obj->assoc());
     };
     $delete = function () use($class, $obj) {
         return $class->pop($obj->getId());
     };
     $date = function ($f) use($obj) {
         return date('Y-m-d H:i:s', $obj->{$f});
     };
     $hydrate = function ($data) use($obj) {
         if (Arrays::isAssoc($data)) {
             foreach ($data as $k => $v) {
                 $obj->{$k} = $v;
             }
         }
         return $obj;
     };
     $display = function ($field) use($obj) {
         return Html\Helper::display($obj->{$field});
     };
     $tab = function () use($obj) {
         return $obj->assoc();
     };
     $asset = function ($field) use($obj) {
         return '/storage/img/' . $obj->{$field};
     };
     $obj->event('save', $save)->event('delete', $delete)->event('date', $date)->event('hydrate', $hydrate)->event('tab', $tab)->event('asset', $asset)->event('display', $display);
     return $obj->populate($values);
 }
Example #6
0
 public static function makeFormElement($field, $value, $fieldInfos, $type, $hidden = false)
 {
     if (true === $hidden) {
         return Form::hidden($field, $value, array('id' => $field));
     }
     $label = Html\Helper::display($fieldInfos['label']);
     $oldValue = $value;
     if (Arrays::exists('contentForm', $fieldInfos)) {
         if (!empty($fieldInfos['contentForm'])) {
             $content = $fieldInfos['contentForm'];
             $content = repl(array('##self##', '##field##', '##type##'), array($value, $field, $type), $content);
             $value = static::internalFunction($content);
         }
     }
     if (true === is_string($value)) {
         $value = Html\Helper::display($value);
     }
     $type = $fieldInfos['fieldType'];
     $required = $fieldInfos['required'];
     switch ($type) {
         case 'select':
             return Form::select($field, $value, $oldValue, array('id' => $field, 'required' => $required), $label);
         case 'password':
             return Form::$type($field, array('id' => $field, 'required' => $required), $label);
         default:
             return Form::$type($field, $value, array('id' => $field, 'required' => $required), $label);
     }
 }
Example #7
0
 public static function makeQueryDisplay($queryJs, $type)
 {
     $fields = static::getModel($type);
     $queryJs = substr($queryJs, 9, -2);
     $query = repl('##', ' AND ', $queryJs);
     $query = repl('%%', ' ', $query);
     $query = repl('NOT LIKE', 'ne contient pas', $query);
     $query = repl('LIKESTART', 'commence par', $query);
     $query = repl('LIKEEND', 'finit par', $query);
     $query = repl('LIKE', 'contient', $query);
     $query = repl('%', '', $query);
     foreach ($fields as $field => $fieldInfos) {
         if (strstr($query, $field)) {
             if (strlen($fieldInfos['content'])) {
                 $seg = Utils::cut($field, " '", $query);
                 $segs = explode(" '", $query);
                 for ($i = 0; $i < count($segs); $i++) {
                     $seg = trim($segs[$i]);
                     if (strstr($seg, $field)) {
                         $goodSeg = trim($segs[$i + 1]);
                         list($oldValue, $dummy) = explode("'", $goodSeg, 2);
                         $content = repl(array('##self##', '##type##', '##field##'), array($oldValue, $type, $field), $fieldInfos['content']);
                         $value = Html\Helper::display(static::internalFunction($content));
                         $newSeg = repl("{$oldValue}'", "{$value}'", $goodSeg);
                         $query = repl($goodSeg, $newSeg, $query);
                     }
                 }
             }
             $query = repl($field, Inflector::lower($fieldInfos['label']), $query);
         }
     }
     $query = repl('=', 'vaut', $query);
     $query = repl('<', 'plus petit que', $query);
     $query = repl('>', 'plus grand que', $query);
     $query = repl('>=', 'plus grand ou vaut', $query);
     $query = repl('<=', 'plus petit ou vaut', $query);
     $query = repl(' AND ', ' et ', $query);
     $query = repl(" '", ' <span style="color: #ffdd00;">', $query);
     $query = repl("'", '</span>', $query);
     return $query;
 }
Example #8
0
 protected function makeSearch()
 {
     $where = !strlen($this->_request->getCrudWhere()) ? '' : Project::makeQueryDisplay($this->_request->getCrudWhere(), $this->_type);
     $search = '<div class="span10">' . NL;
     if (!empty($where)) {
         $search .= '<span class="badge badge-success">Recherche en cours : ' . $where . '</span>';
         $search .= '&nbsp;&nbsp;<a class="btn btn-warning" href="#" onclick="document.location.href = document.URL;"><i class="icon-trash icon-white"></i> Supprimer cette recherche</a>&nbsp;&nbsp;';
     }
     $search .= '<button id="newCrudSearch" type="button" class="btn btn-info" onclick="$(\'#crudSearchDiv\').slideDown();$(\'#newCrudSearch\').hide();$(\'#hideCrudSearch\').show();"><i class="icon-search icon-white"></i> Effectuer une nouvelle recherche</button>';
     $search .= '&nbsp;&nbsp;<button id="hideCrudSearch" type="button" style="display: none;" class="btn btn-danger" onclick="$(\'#crudSearchDiv\').slideUp();$(\'#newCrudSearch\').show();$(\'#hideCrudSearch\').hide();">Masquer la recherche</button>';
     $search .= '<fieldset id="crudSearchDiv" style="display:none;">' . NL;
     $search .= '<hr />' . NL;
     $i = 0;
     $fieldsJs = array();
     $js = '<script type="text/javascript">' . NL;
     foreach ($this->_config['fields'] as $field => $infosField) {
         if (true === $infosField['searchable']) {
             $fieldsJs[] = "'{$field}'";
             $search .= '<div class="control-group">' . NL;
             $search .= '<label class="control-label">' . Html\Helper::display($infosField['label']) . '</label>' . NL;
             $search .= '<div class="controls" id="crudControl_' . $i . '">' . NL;
             $search .= '<select id="crudSearchOperator_' . $i . '">
                 <option value="=">=</option>
                 <option value="LIKE">Contient</option>
                 <option value="NOT LIKE">Ne contient pas</option>
                 <option value="START">Commence par</option>
                 <option value="END">Finit par</option>
                 <option value="<">&lt;</option>
                 <option value=">">&gt;</option>
                 <option value="<=">&le;</option>
                 <option value=">=">&ge;</option>
                 </select>' . NL;
             $content = $infosField['contentSearch'];
             if (empty($content)) {
                 $search .= '<input type="text" id="crudSearchValue_' . $i . '" value="" />';
             } else {
                 $content = repl(array('##field##', '##type##', '##i##'), array($field, $this->_type, $i), $content);
                 $search .= Crud::internalFunction($content);
             }
             $search .= '&nbsp;&nbsp;<a class="btn" href="#" onclick="addRowSearch(\'' . $field . '\', ' . $i . '); return false;"><i class="icon-plus"></i></a>';
             $search .= '</div>' . NL;
             $search .= '</div>' . NL;
             $i++;
         }
     }
     $js .= 'var searchFields = [' . implode(', ', $fieldsJs) . ']; var numFieldsSearch = ' . ($i - 1) . ';';
     $js .= '</script>' . NL;
     $search .= '<div class="control-group">
             <div class="controls">
                 <button type="submit" class="btn btn-primary" name="Rechercher" onclick="makeCrudSearch();">Rechercher</button>
             </div>
         </div>' . NL;
     $search .= '</fieldset>' . NL;
     $search .= '</div>
     <div class="span2"></div>' . NL . $js . NL;
     $this->_search = $search;
 }