本文整理汇总了PHP中record_adapter::get_subdefs方法的典型用法代码示例。如果您正苦于以下问题:PHP record_adapter::get_subdefs方法的具体用法?PHP record_adapter::get_subdefs怎么用?PHP record_adapter::get_subdefs使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类record_adapter
的用法示例。
在下文中一共展示了record_adapter::get_subdefs方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: bootTestCase
public function bootTestCase()
{
$file = new File(self::$DI['app'], self::$DI['app']['mediavorus']->guess(__DIR__ . "/../../files/iphone_pic.jpg"), self::$DI['collection']);
self::$recordonbleu = record_adapter::createFromFile($file, self::$DI['app']);
self::$DI['app']['subdef.generator']->generateSubdefs(self::$recordonbleu);
foreach (self::$recordonbleu->get_subdefs() as $subdef) {
if ($subdef->get_name() == 'document') {
continue;
}
if (!self::$objectPresent) {
self::$objectPresent = $subdef;
continue;
}
if (!self::$objectNotPresent) {
self::$objectNotPresent = $subdef;
continue;
}
}
self::$objectNotPresent->remove_file();
}
示例2: refresh
/**
* @param Application $app
* @param int $sbas_id
*
* @return cache_databox
*/
public static function refresh(Application $app, $sbas_id)
{
if (self::$refreshing) {
return;
}
self::$refreshing = true;
$databox = $app['phraseanet.appbox']->get_databox((int) $sbas_id);
$date = new \DateTime('-3 seconds');
$last_update = null;
try {
$last_update = $app['phraseanet.appbox']->get_data_from_cache('memcached_update_' . $sbas_id);
} catch (\Exception $e) {
}
if ($last_update) {
$last_update = new \DateTime($last_update);
} else {
$last_update = new \DateTime('-10 years');
}
if ($date <= $last_update) {
self::$refreshing = false;
return;
}
$connsbas = $databox->get_connection();
$sql = 'SELECT type, value FROM memcached WHERE site_id = :site_id';
$stmt = $connsbas->prepare($sql);
$stmt->execute([':site_id' => $app['conf']->get('servername')]);
$rs = $stmt->fetchAll(\PDO::FETCH_ASSOC);
$stmt->closeCursor();
foreach ($rs as $row) {
switch ($row['type']) {
case 'record':
$key = 'record_' . $sbas_id . '_' . $row['value'];
$databox->delete_data_from_cache($key);
$key = 'record_' . $sbas_id . '_' . $row['value'] . '_' . \record_adapter::CACHE_SUBDEFS;
$databox->delete_data_from_cache($key);
$key = 'record_' . $sbas_id . '_' . $row['value'] . '_' . \record_adapter::CACHE_GROUPING;
$databox->delete_data_from_cache($key);
$key = 'record_' . $sbas_id . '_' . $row['value'] . '_' . \record_adapter::CACHE_MIME;
$databox->delete_data_from_cache($key);
$key = 'record_' . $sbas_id . '_' . $row['value'] . '_' . \record_adapter::CACHE_ORIGINAL_NAME;
$databox->delete_data_from_cache($key);
$key = 'record_' . $sbas_id . '_' . $row['value'] . '_' . \record_adapter::CACHE_SHA256;
$databox->delete_data_from_cache($key);
$key = 'record_' . $sbas_id . '_' . $row['value'] . '_' . \record_adapter::CACHE_STATUS;
$databox->delete_data_from_cache($key);
$key = 'record_' . $sbas_id . '_' . $row['value'] . '_' . \record_adapter::CACHE_TECHNICAL_DATAS;
$databox->delete_data_from_cache($key);
$sql = 'DELETE FROM memcached
WHERE site_id = :site_id AND type="record" AND value = :value';
$params = [':site_id' => $app['conf']->get('servername'), ':value' => $row['value']];
$stmt = $connsbas->prepare($sql);
$stmt->execute($params);
$stmt->closeCursor();
$record = new \record_adapter($app, $sbas_id, $row['value']);
$record->get_caption()->delete_data_from_cache();
foreach ($record->get_subdefs() as $subdef) {
$subdef->delete_data_from_cache();
}
break;
case 'structure':
$app['phraseanet.appbox']->delete_data_from_cache(\appbox::CACHE_LIST_BASES);
$app['phraseanet.appbox']->delete_data_from_cache(\appbox::CACHE_SBAS_IDS);
$sql = 'DELETE FROM memcached
WHERE site_id = :site_id AND type="structure" AND value = :value';
$params = [':site_id' => $app['conf']->get('servername'), ':value' => $row['value']];
$stmt = $connsbas->prepare($sql);
$stmt->execute($params);
$stmt->closeCursor();
break;
}
}
$date = new \DateTime();
$now = $date->format(DATE_ISO8601);
$app['phraseanet.appbox']->set_data_to_cache($now, 'memcached_update_' . $sbas_id);
$conn = $app['phraseanet.appbox']->get_connection();
$sql = 'UPDATE sitepreff SET memcached_update = :date';
$stmt = $conn->prepare($sql);
$stmt->execute([':date' => $now]);
$stmt->closeCursor();
self::$refreshing = false;
return;
}
示例3: applyAction
public function applyAction(Request $request)
{
$records = RecordsRequest::fromRequest($this->app, $request, RecordsRequest::FLATTEN_YES_PRESERVE_STORIES, ['canmodifrecord']);
$databoxes = $records->databoxes();
if (count($databoxes) !== 1) {
throw new \Exception('Unable to edit on multiple databoxes');
}
/** @var \databox $databox */
$databox = reset($databoxes);
if ($request->request->get('act_option') == 'SAVEGRP' && $request->request->get('newrepresent') && $records->isSingleStory()) {
try {
$reg_record = $records->singleStory();
$newsubdef_reg = new \record_adapter($this->app, $reg_record->get_sbas_id(), $request->request->get('newrepresent'));
foreach ($newsubdef_reg->get_subdefs() as $name => $value) {
if (!in_array($name, ['thumbnail', 'preview'])) {
continue;
}
if ($value->get_type() !== \media_subdef::TYPE_IMAGE) {
continue;
}
$media = $this->app->getMediaFromUri($value->get_pathfile());
$this->getSubDefinitionSubstituer()->substitute($reg_record, $name, $media);
$this->getDispatcher()->dispatch(PhraseaEvents::RECORD_EDIT, new RecordEdit($reg_record));
$this->getDataboxLogger($reg_record->get_databox())->log($reg_record, \Session_Logger::EVENT_SUBSTITUTE, $name == 'document' ? 'HD' : $name, '');
}
} catch (\Exception $e) {
}
}
if (!is_array($request->request->get('mds'))) {
return $this->app->json(['message' => '', 'error' => false]);
}
$elements = $records->toArray();
foreach ($request->request->get('mds') as $rec) {
try {
$record = $databox->get_record($rec['record_id']);
} catch (\Exception $e) {
continue;
}
$key = $record->get_serialize_key();
if (!array_key_exists($key, $elements)) {
continue;
}
$statbits = $rec['status'];
$editDirty = $rec['edit'];
if ($editDirty == '0') {
$editDirty = false;
} else {
$editDirty = true;
}
if (isset($rec['metadatas']) && is_array($rec['metadatas'])) {
$record->set_metadatas($rec['metadatas']);
$this->getDispatcher()->dispatch(PhraseaEvents::RECORD_EDIT, new RecordEdit($record));
}
$newstat = $record->get_status();
$statbits = ltrim($statbits, 'x');
if (!in_array($statbits, ['', 'null'])) {
$mask_and = ltrim(str_replace(['x', '0', '1', 'z'], ['1', 'z', '0', '1'], $statbits), '0');
if ($mask_and != '') {
$newstat = \databox_status::operation_and_not($newstat, $mask_and);
}
$mask_or = ltrim(str_replace('x', '0', $statbits), '0');
if ($mask_or != '') {
$newstat = \databox_status::operation_or($newstat, $mask_or);
}
$record->set_binary_status($newstat);
}
$record->write_metas()->get_collection()->reset_stamp($record->get_record_id());
if ($statbits != '') {
$this->getDataboxLogger($databox)->log($record, \Session_Logger::EVENT_STATUS, '', '');
}
if ($editDirty) {
$this->getDataboxLogger($databox)->log($record, \Session_Logger::EVENT_EDIT, '', '');
}
}
return $this->app->json(['success' => true]);
}
示例4: doExport
protected function doExport(Application $app, Task $task, FtpExport $export)
{
$settings = simplexml_load_string($task->getSettings());
$proxy = (string) $settings->proxy;
$proxyport = (string) $settings->proxyport;
$state = "";
$ftp_server = $export->getAddr();
$ftp_user_name = $export->getLogin();
$ftp_user_pass = $export->getPwd();
$ftpLog = $ftp_user_name . "@" . \p4string::addEndSlash($ftp_server) . $export->getDestfolder();
if ($export->getCrash() == 0) {
$line = $this->translator->trans('task::ftp:Etat d\'envoi FTP vers le serveur "%server%" avec le compte "%username%" et pour destination le dossier : "%directory%"', ['%server%' => $ftp_server, '%username%' => $ftp_user_name, '%directory%' => $export->getDestfolder()]) . PHP_EOL;
$state .= $line;
$this->log('debug', $line);
}
$state .= $line = $this->translator->trans("task::ftp:TENTATIVE no %number%, %date%", ['%number%' => $export->getCrash() + 1, '%date%' => " (" . date('r') . ")"]) . PHP_EOL;
$this->log('debug', $line);
try {
$ssl = $export->isSsl();
$ftp_client = $app['phraseanet.ftp.client']($ftp_server, 21, 300, $ssl, $proxy, $proxyport);
$ftp_client->login($ftp_user_name, $ftp_user_pass);
if ($export->isPassif()) {
try {
$ftp_client->passive(true);
} catch (\Exception $e) {
$this->log('debug', $e->getMessage());
}
}
if (trim($export->getDestfolder()) != '') {
try {
$ftp_client->chdir($export->getDestFolder());
$export->setDestfolder('/' . $export->getDestfolder());
} catch (\Exception $e) {
$this->log('debug', $e->getMessage());
}
} else {
$export->setDestfolder('/');
}
if (trim($export->getFoldertocreate()) != '') {
try {
$ftp_client->mkdir($export->getFoldertocreate());
} catch (\Exception $e) {
$this->log('debug', $e->getMessage());
}
try {
$new_dir = $ftp_client->add_end_slash($export->getDestfolder()) . $export->getFoldertocreate();
$ftp_client->chdir($new_dir);
} catch (\Exception $e) {
$this->log('debug', $e->getMessage());
}
}
$obj = [];
$basefolder = '';
if (!in_array(trim($export->getDestfolder()), ['.', './', ''])) {
$basefolder = \p4string::addEndSlash($export->getDestfolder());
}
$basefolder .= $export->getFoldertocreate();
if (in_array(trim($basefolder), ['.', './', ''])) {
$basefolder = '/';
}
foreach ($export->getElements() as $exportElement) {
if ($exportElement->isDone()) {
continue;
}
$base_id = $exportElement->getBaseId();
$record_id = $exportElement->getRecordId();
$subdef = $exportElement->getSubdef();
$localfile = null;
try {
$sbas_id = \phrasea::sbasFromBas($app, $base_id);
$record = new \record_adapter($app, $sbas_id, $record_id);
$sdcaption = $app['serializer.caption']->serialize($record->get_caption(), CaptionSerializer::SERIALIZE_XML, $exportElement->isBusinessfields());
$remotefile = $exportElement->getFilename();
if ($subdef == 'caption') {
$desc = $app['serializer.caption']->serialize($record->get_caption(), CaptionSerializer::SERIALIZE_XML, $exportElement->isBusinessfields());
$localfile = sys_get_temp_dir() . '/' . md5($desc . time() . mt_rand());
if (file_put_contents($localfile, $desc) === false) {
throw new \Exception('Impossible de creer un fichier temporaire');
}
} elseif ($subdef == 'caption-yaml') {
$desc = $app['serializer.caption']->serialize($record->get_caption(), CaptionSerializer::SERIALIZE_YAML, $exportElement->isBusinessfields());
$localfile = sys_get_temp_dir() . '/' . md5($desc . time() . mt_rand());
if (file_put_contents($localfile, $desc) === false) {
throw new \Exception('Impossible de creer un fichier temporaire');
}
} else {
$sd = $record->get_subdefs();
if (!$sd || !isset($sd[$subdef])) {
continue;
}
$localfile = $sd[$subdef]->get_pathfile();
if (!file_exists($localfile)) {
throw new \Exception('Le fichier local n\'existe pas');
}
}
$current_folder = rtrim(str_replace('//', '/', $basefolder . $exportElement->getFolder()), '/');
if ($ftp_client->pwd() != $current_folder) {
try {
$ftp_client->chdir($current_folder);
} catch (\Exception $e) {
//.........这里部分代码省略.........
示例5: connect
//.........这里部分代码省略.........
try {
if ($sbas_id === 0) {
throw new \Exception('Invalid sbas_id');
}
$VC = VocabularyController::get($app, $vocabulary);
$databox = $app['phraseanet.appbox']->get_databox($sbas_id);
} catch (\Exception $e) {
$datas['message'] = $app->trans('Vocabulary not found');
return $app->json($datas);
}
$query = $request->query->get('query');
$results = $VC->find($query, $app['authentication']->getUser(), $databox);
$list = [];
foreach ($results as $Term) {
/* @var $Term \Alchemy\Phrasea\Vocabulary\Term */
$list[] = ['id' => $Term->getId(), 'context' => $Term->getContext(), 'value' => $Term->getValue()];
}
$datas['success'] = true;
$datas['results'] = $list;
return $app->json($datas);
});
$controllers->post('/apply/', function (Application $app, Request $request) {
$records = RecordsRequest::fromRequest($app, $request, RecordsRequest::FLATTEN_YES_PRESERVE_STORIES, ['canmodifrecord']);
if (count($records->databoxes()) !== 1) {
throw new \Exception('Unable to edit on multiple databoxes');
}
if ($request->request->get('act_option') == 'SAVEGRP' && $request->request->get('newrepresent') && $records->isSingleStory()) {
try {
$reg_record = $records->singleStory();
$newsubdef_reg = new \record_adapter($app, $reg_record->get_sbas_id(), $request->request->get('newrepresent'));
if ($newsubdef_reg->get_type() !== 'image') {
throw new \Exception('A reg image must come from image data');
}
foreach ($newsubdef_reg->get_subdefs() as $name => $value) {
if (!in_array($name, ['thumbnail', 'preview'])) {
continue;
}
$media = $app['mediavorus']->guess($value->get_pathfile());
$app['subdef.substituer']->substitute($reg_record, $name, $media);
$app['phraseanet.logger']($reg_record->get_databox())->log($reg_record, \Session_Logger::EVENT_SUBSTITUTE, $name == 'document' ? 'HD' : $name, '');
}
} catch (\Exception $e) {
}
}
if (!is_array($request->request->get('mds'))) {
return $app->json(['message' => '', 'error' => false]);
}
$databoxes = $records->databoxes();
$databox = array_pop($databoxes);
$meta_struct = $databox->get_meta_structure();
$write_edit_el = false;
$date_obj = new \DateTime();
foreach ($meta_struct->get_elements() as $meta_struct_el) {
if ($meta_struct_el->get_tag() instanceof TfEditdate) {
$write_edit_el = $meta_struct_el;
}
}
$elements = $records->toArray();
foreach ($request->request->get('mds') as $rec) {
try {
$record = $databox->get_record($rec['record_id']);
} catch (\Exception $e) {
continue;
}
$key = $record->get_serialize_key();
if (!array_key_exists($key, $elements)) {
示例6: doExecute
/**
* {@inheritdoc}
*/
protected function doExecute(InputInterface $input, OutputInterface $output)
{
$availableTypes = array('document', 'audio', 'video', 'image', 'flash', 'map');
$typesOption = $input->getArgument('type');
$recordsType = explode(',', $typesOption);
$recordsType = array_filter($recordsType, function ($type) use($availableTypes) {
return in_array($type, $availableTypes);
});
if (count($recordsType) === 0) {
$output->write(sprintf('Invalid records type provided %s', implode(', ', $availableTypes)));
return;
}
$subdefsOption = $input->getArgument('subdefs');
$subdefsName = explode(',', $subdefsOption);
if (count($subdefsOption) === 0) {
$output->write('No subdef options provided');
return;
}
$sqlCount = "SELECT COUNT(DISTINCT(r.record_id)) AS nb_records" . " FROM record r LEFT JOIN subdef s ON (r.record_id = s.record_id AND s.name IN (?))" . " WHERE r.type IN (?)";
$types = array(Connection::PARAM_STR_ARRAY, Connection::PARAM_STR_ARRAY);
$params = array($subdefsName, $recordsType);
if (null !== ($min = $input->getOption('min_record'))) {
$sqlCount .= " AND (r.record_id >= ?)";
$params[] = (int) $min;
$types[] = \PDO::PARAM_INT;
}
if (null !== ($max = $input->getOption('max_record'))) {
$sqlCount .= " AND (r.record_id <= ?)";
$params[] = (int) $max;
$types[] = \PDO::PARAM_INT;
}
$substitutionOnly = $input->getOption('substitution-only');
$withSubstitution = $input->getOption('with-substitution');
if (false === $withSubstitution) {
if (true === $substitutionOnly) {
$sqlCount .= " AND (ISNULL(s.substit) OR s.substit = 1)";
} else {
$sqlCount .= " AND (ISNULL(s.substit) OR s.substit = 0)";
}
} elseif ($substitutionOnly) {
throw new InvalidArgumentException('Conflict, you can not ask for --substitution-only && --with-substitution parameters at the same time');
}
list($sqlCount, $stmtParams) = SQLParserUtils::expandListParameters($sqlCount, $params, $types);
$databox = $this->container->findDataboxById($input->getArgument('databox'));
$output->writeln($sqlCount);
$connection = $databox->get_connection();
$stmt = $connection->prepare($sqlCount);
$stmt->execute($stmtParams);
$row = $stmt->fetch();
$totalRecords = $row['nb_records'];
if ($totalRecords === 0) {
return;
}
/** @var HelperSet $helperSet */
$helperSet = $this->getHelperSet();
/** @var ProgressBar $progress */
$progress = $helperSet->get('progress');
$progress->start($output, $totalRecords);
$progress->display();
$sql = "SELECT DISTINCT(r.record_id)" . " FROM record r LEFT JOIN subdef s ON (r.record_id = s.record_id AND s.name IN (?))" . " WHERE r.type IN (?)";
$types = array(Connection::PARAM_STR_ARRAY, Connection::PARAM_STR_ARRAY);
$params = array($subdefsName, $recordsType);
if ($min) {
$sql .= " AND (r.record_id >= ?)";
$params[] = (int) $min;
$types[] = \PDO::PARAM_INT;
}
if ($max) {
$sql .= " AND (r.record_id <= ?)";
$params[] = (int) $max;
$types[] = \PDO::PARAM_INT;
}
if (false === $withSubstitution) {
if (true === $substitutionOnly) {
$sql .= " AND (ISNULL(s.substit) OR s.substit = 1)";
} else {
$sql .= " AND (ISNULL(s.substit) OR s.substit = 0)";
}
}
list($sql, $stmtParams) = SQLParserUtils::expandListParameters($sql, $params, $types);
$connection = $databox->get_connection();
$stmt = $connection->prepare($sql);
$stmt->execute($stmtParams);
$rows = $stmt->fetchAll(\PDO::FETCH_ASSOC);
foreach ($rows as $row) {
$output->write(sprintf(' (#%s)', $row['record_id']));
$record = new \record_adapter($this->container, $databox->get_sbas_id(), $row['record_id']);
/** @var media_subdef[] $subdefs */
$subdefs = array_filter($record->get_subdefs(), function (media_subdef $subdef) use($subdefsName) {
return in_array($subdef->get_name(), $subdefsName);
});
foreach ($subdefs as $subdef) {
$subdef->remove_file();
if ($withSubstitution && $subdef->is_substituted() || $substitutionOnly) {
$subdef->set_substituted(false);
}
}
//.........这里部分代码省略.........