public function csvByZone($address) { ini_set('memory_limit', '1024M'); set_time_limit(0); $file = '/home/gerald/Bureau/' . Inflector::urlize($address) . '_' . date('dmYHis') . '.csv'; touch($file); $zone = rdb('geo', 'zone')->where(['address', '=i', $address])->first(true); if ($zone) { File::append($file, implode(';', ['category', 'name', 'address', 'lat', 'lng', 'altitude', 'zip', 'city', 'phone', 'mail', 'url']) . "\n"); $pivots = $zone->pivots(rdb('geo', 'etablissement')->model())->exec(true); foreach ($pivots as $pivot) { $etab = $pivot->etablissement(true); if ($zone) { $relations = $etab->pivots(rdb('geo', 'service'))->exec(true); foreach ($relations as $relation) { $sp = $relation->service(true); if ($sp) { $item = []; $item['category'] = str_replace([', ', ','], '-', $sp->label); $item['name'] = str_replace([', ', ','], '-', $etab->name); $item['address'] = str_replace([', ', ','], '-', $etab->address); $item['lat'] = str_replace([', ', ','], '.', $etab->lat); $item['lng'] = str_replace([', ', ','], '.', $etab->lng); $item['altitude'] = str_replace([', ', ','], '.', $etab->altitude); $item['zip'] = str_replace([', ', ','], '-', $etab->zip); $item['city'] = str_replace([', ', ','], '-', $etab->city); $item['phone'] = str_replace([', ', ','], '-', $etab->phone); $item['mail'] = str_replace([', ', ','], '-', $etab->mail); $item['url'] = str_replace([', ', ','], '-', $etab->url); File::append($file, implode(';', $item) . "\n"); } } } } } }
function ThinLog($message, $logFile = null, $type = 'info') { if (null === $logFile) { $logFile = LOGS_PATH . DS . date('Y-m-d') . '.log'; } else { if (false === File::exists($logFile)) { File::create($logFile); } } File::append($logFile, date('Y-m-d H:i:s') . "\t" . Inflector::upper($type) . "\t{$message}\n"); }
public function seeds($database = null) { set_time_limit(0); $database = is_null($database) ? SITE_NAME : $database; $path = STORAGE_PATH . DS . 'seeds'; if (!is_dir($path)) { File::mkdir($path); } $now = time(); $db = $this->getOdm(); $backup = self::instance('core', 'backup'); $collections = $db->getCollectionNames(); $key = array_search('zelift.ages', $collections); if (strlen($key)) { unset($collections[$key]); } $key = array_search('zelift.counters', $collections); if (strlen($key)) { unset($collections[$key]); } $key = array_search('zelift.tuples', $collections); if (strlen($key)) { unset($collections[$key]); } $key = array_search('zelift.caching', $collections); if (strlen($key)) { unset($collections[$key]); } $key = array_search('zelift.ages', $collections); if (strlen($key)) { unset($collections[$key]); } foreach ($collections as $coll) { list($collDb, $collTable) = explode('.', $coll, 2); if ($collDb != $database) { continue; } $row = $backup->where(['collection', '=', $coll])->first(true); if (!$row) { $row = $backup->firstOrCreate(['collection' => $coll])->setWhen($now)->save(); } $file = STORAGE_PATH . DS . 'seeds' . DS . str_replace('.', '_', $coll) . '.php'; $model = self::instance($collDb, $collTable); $last = $model->where(['id', '>', 0])->select('updated_at')->order('updated_at', 'DESC')->first(true); if ($last) { if ($last->updated_at > $row->when || !File::exists($file)) { if (!File::exists($file)) { $datas = $model->select('id')->get(); } else { $datas = $model->where(['updated_at', '>=', (int) $now])->select('id')->get(); File::delete($file); } if (!empty($datas)) { File::put($file, '<?php' . "\nnamespace Thin;\n\n"); $code = ''; $code .= '$db = rdb("' . $collDb . '", "' . $collTable . '");' . "\n\n\n"; File::append($file, $code); foreach ($datas as $rowData) { $data = $model->find((int) $rowData['id'], false); $codeRow = '// *** ligne ' . $data['id'] . ' ***' . "\n"; $codeRow .= '$row = $db->find(' . $data['id'] . ');' . "\n\n"; $codeRow .= 'if (!$row) {' . "\n"; $codeRow .= "\t" . '$row = $db->addWithId(["id" => ' . $data['id'] . ']);' . "\n"; $codeRow .= '}' . "\n\n"; unset($data['id']); $codeRow .= '$data = ' . var_export($data, 1) . ';' . "\n"; $codeRow .= '$row->hydrate($data)->save();' . "\n"; $codeRow .= '// *** fin ligne ' . $data['id'] . ' ***' . "\n\n"; File::append($file, $codeRow); } $row->setWhen($now)->save(); } } } } dd(Timer::get()); }