本文整理汇总了PHP中xarModAPIFunc函数的典型用法代码示例。如果您正苦于以下问题:PHP xarModAPIFunc函数的具体用法?PHP xarModAPIFunc怎么用?PHP xarModAPIFunc使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了xarModAPIFunc函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: publications_user_new
function publications_user_new($args)
{
extract($args);
// Get parameters
if (!xarVarFetch('ptid', 'id', $data['ptid'], xarModVars::get('publications', 'defaultpubtype'), XARVAR_NOT_REQUIRED)) {
return;
}
if (!xarVarFetch('catid', 'str', $catid, NULL, XARVAR_NOT_REQUIRED)) {
return;
}
if (!xarVarFetch('itemtype', 'id', $itemtype, NULL, XARVAR_NOT_REQUIRED)) {
return;
}
$data['items'] = array();
$pubtypeobject = DataObjectMaster::getObject(array('name' => 'publications_types'));
$pubtypeobject->getItem(array('itemid' => $data['ptid']));
$data['object'] = DataObjectMaster::getObject(array('name' => $pubtypeobject->properties['name']->value));
$data['properties'] = $data['object']->getProperties();
if (!empty($data['ptid'])) {
$template = $pubtypeobject->properties['template']->value;
} else {
// TODO: allow templates per category ?
$template = null;
}
// Get the settings of the publication type we are using
$data['settings'] = xarModAPIFunc('publications', 'user', 'getsettings', array('ptid' => $data['ptid']));
return xarTplModule('publications', 'admin', 'new', $data, $template);
}
示例2: publications_admin_stats
/**
* view statistics
*/
function publications_admin_stats($args = array())
{
if (!xarSecurityCheck('AdminPublications')) {
return;
}
if (!xarVarFetch('group', 'isset', $group, array(), XARVAR_NOT_REQUIRED)) {
return;
}
extract($args);
if (!empty($group)) {
$newgroup = array();
foreach ($group as $field) {
if (empty($field)) {
continue;
}
$newgroup[] = $field;
}
$group = $newgroup;
}
if (empty($group)) {
$group = array('pubtype_id', 'state', 'owner');
}
$data = array();
$data['group'] = $group;
$data['stats'] = xarModAPIFunc('publications', 'admin', 'getstats', array('group' => $group));
$data['pubtypes'] = xarModAPIFunc('publications', 'user', 'get_pubtypes');
$data['statelist'] = xarModAPIFunc('publications', 'user', 'getstates');
$data['fields'] = array('pubtype_id' => xarML('Publication Type'), 'state' => xarML('Status'), 'owner' => xarML('Author'), 'pubdate_year' => xarML('Publication Year'), 'pubdate_month' => xarML('Publication Month'), 'pubdate_day' => xarML('Publication Day'), 'locale' => xarML('Language'));
return $data;
}
示例3: publications_admin_modify_pubtype
function publications_admin_modify_pubtype($args)
{
if (!xarSecurityCheck('AdminPublications')) {
return;
}
extract($args);
// Get parameters
if (!xarVarFetch('itemid', 'isset', $data['itemid'], NULL, XARVAR_DONT_SET)) {
return;
}
if (!xarVarFetch('returnurl', 'str:1', $data['returnurl'], 'view', XARVAR_NOT_REQUIRED)) {
return;
}
if (!xarVarFetch('name', 'str:1', $name, '', XARVAR_NOT_REQUIRED)) {
return;
}
if (!xarVarFetch('tab', 'str:1', $data['tab'], '', XARVAR_NOT_REQUIRED)) {
return;
}
if (!xarVarFetch('confirm', 'bool', $data['confirm'], false, XARVAR_NOT_REQUIRED)) {
return;
}
if (empty($name) && empty($itemid)) {
return xarResponse::NotFound();
}
// Get our object
$data['object'] = DataObjectMaster::getObject(array('name' => 'publications_types'));
if (!empty($data['itemid'])) {
$data['object']->getItem(array('itemid' => $data['itemid']));
} else {
$type_list = DataObjectMaster::getObjectList(array('name' => 'publications_types'));
$where = 'name = ' . $name;
$items = $type_list->getItems(array('where' => $where));
$item = current($items);
$data['object']->getItem(array('itemid' => $item['id']));
}
// Send the publication type and the object properties to the template
$data['properties'] = $data['object']->getProperties();
// Get the settings of the publication type we are using
$data['settings'] = xarModAPIFunc('publications', 'user', 'getsettings', array('ptid' => $data['itemid']));
if ($data['confirm']) {
// Check for a valid confirmation key
if (!xarSecConfirmAuthKey()) {
return;
}
// Get the data from the form
$isvalid = $data['object']->checkInput();
if (!$isvalid) {
// Bad data: redisplay the form with error messages
return xarTplModule('publications', 'admin', 'modify_pubtype', $data);
} else {
// Good data: create the item
$itemid = $data['object']->updateItem(array('itemid' => $data['itemid']));
// Jump to the next page
xarController::redirect(xarModURL('publications', 'admin', 'view_pubtypes'));
return true;
}
}
return $data;
}
示例4: publications_userapi_getnext
/**
* get next article
* Note : the following parameters are all optional (except id and ptid)
*
* @param $args['id'] the article ID we want to have the next article of
* @param $args['ptid'] publication type ID (for news, sections, reviews, ...)
* @param $args['sort'] sort order ('date','title','hits','rating',...)
* @param $args['owner'] the ID of the author
* @param $args['state'] array of requested status(es) for the publications
* @param $args['enddate'] publications published before enddate
* (unix timestamp format)
* @return array of article fields, or false on failure
*/
function publications_userapi_getnext($args)
{
// Get arguments from argument array
extract($args);
// Optional argument
if (empty($sort)) {
$sort = 'date';
}
if (!isset($state)) {
// frontpage or approved
$state = array(PUBLICATIONS_STATE_FRONTPAGE, PUBLICATIONS_STATE_APPROVED);
}
// Default fields in publications (for now)
$fields = array('id', 'title');
// Security check
if (!xarSecurityCheck('ViewPublications')) {
return;
}
// Database information
$dbconn = xarDB::getConn();
// Get the field names and LEFT JOIN ... ON ... parts from publications
// By passing on the $args, we can let leftjoin() create the WHERE for
// the publications-specific columns too now
$publicationsdef = xarModAPIFunc('publications', 'user', 'leftjoin', $args);
// Create the query
$query = "SELECT {$publicationsdef['id']}, {$publicationsdef['title']}, {$publicationsdef['pubtype_id']}, {$publicationsdef['owner']}\n FROM {$publicationsdef['table']} WHERE ";
// we rely on leftjoin() to create the necessary publications clauses now
if (!empty($publicationsdef['where'])) {
$query .= " {$publicationsdef['where']} AND ";
}
// Get current article
$current = xarModAPIFunc('publications', 'user', 'get', array('id' => $id));
// Create the ORDER BY part
switch ($sort) {
case 'title':
$query .= $publicationsdef['title'] . ' > ' . $dbconn->qstr($current['title']) . ' ORDER BY ' . $publicationsdef['title'] . ' ASC, ' . $publicationsdef['id'] . ' ASC';
break;
case 'id':
$query .= $publicationsdef['id'] . ' > ' . $current['id'] . ' ORDER BY ' . $publicationsdef['id'] . ' ASC';
break;
case 'data':
default:
$query .= $publicationsdef['pubdate'] . ' > ' . $dbconn->qstr($current['pubdate']) . ' ORDER BY ' . $publicationsdef['pubdate'] . ' ASC, ' . $publicationsdef['id'] . ' ASC';
}
// Run the query - finally :-)
$result =& $dbconn->SelectLimit($query, 1, 0);
if (!$result) {
return;
}
$item = array();
list($item['id'], $item['title'], $item['pubtype_id'], $item['owner']) = $result->fields;
$result->Close();
// TODO: grab categories & check against them too
// check security - don't generate an exception here
if (!xarSecurityCheck('ViewPublications', 0, 'Publication', "{$item['pubtype_id']}:All:{$item['owner']}:{$item['id']}")) {
return array();
}
return $item;
}
示例5: publications_admin_waitingcontent
/**
* display waiting content as a hook
*/
function publications_admin_waitingcontent()
{
// Get publication types
unset($publinks);
$publinks = xarModAPIFunc('publications', 'user', 'getpublinks', array('state' => array(0), 'typemod' => 'admin'));
$data['loop'] = $publinks;
return $data;
}
示例6: publications_adminapi_createpubtype
/**
* Create a new publication type
*
* @param $args['name'] name of the publication type
* @param $args['descr'] description of the publication type
* @param $args['config'] configuration of the publication type
* @return int publication type ID on success, false on failure
*/
function publications_adminapi_createpubtype($args)
{
// Get arguments from argument array
extract($args);
// Argument check - make sure that all required arguments are present
// and in the right format, if not then set an appropriate error
// message and return
// Note : since we have several arguments we want to check here, we'll
// report all those that are invalid at the same time...
$invalid = array();
if (!isset($name) || !is_string($name) || empty($name)) {
$invalid[] = 'name';
}
if (!isset($config) || !is_array($config) || count($config) == 0) {
$invalid[] = 'configuration';
}
if (count($invalid) > 0) {
$msg = xarML('Invalid #(1) for #(2) function #(3)() in module #(4)', join(', ', $invalid), 'admin', 'createpubtype', 'Publications');
throw new BadParameterException(null, $msg);
}
if (empty($descr)) {
$descr = $name;
}
// Publication type names *must* be lower-case for now
$name = strtolower($name);
// Security check - we require ADMIN rights here
if (!xarSecurityCheck('AdminPublications')) {
return;
}
if (!xarModAPILoad('publications', 'user')) {
return;
}
// Make sure we have all the configuration fields we need
$pubfields = xarModAPIFunc('publications', 'user', 'getpubfields');
foreach ($pubfields as $field => $value) {
if (!isset($config[$field])) {
$config[$field] = '';
}
}
// Get database setup
$dbconn = xarDB::getConn();
$xartable = xarDB::getTables();
$pubtypestable = $xartable['publication_types'];
// Get next ID in table
$nextId = $dbconn->GenId($pubtypestable);
// Insert the publication type
$query = "INSERT INTO {$pubtypestable} (pubtype_id, pubtypename,\n pubtypedescr, pubtypeconfig)\n VALUES (?,?,?,?)";
$bindvars = array($nextId, $name, $descr, serialize($config));
$result =& $dbconn->Execute($query, $bindvars);
if (!$result) {
return;
}
// Get ptid to return
$ptid = $dbconn->PO_Insert_ID($pubtypestable, 'pubtype_id');
// Don't call creation hooks here...
//xarModCallHooks('item', 'create', $ptid, 'ptid');
return $ptid;
}
示例7: galaxia_execute_activity
function galaxia_execute_activity($activity_id = 0, $iid = 0, $auto = 1)
{
$result = xarModAPIFunc('workflow', 'user', 'run_activity', array('activity_id' => $activity_id, 'iid' => $iid, 'auto' => $auto));
if (empty($result)) {
// TODO: clean this up
echo xarExceptionRender('html');
die;
}
}
示例8: modify
function modify()
{
$data = $this->getContent();
$data['fields'] = array('id', 'name');
if (!is_array($data['pubstate'])) {
$statearray = array($data['pubstate']);
} else {
$statearray = $data['pubstate'];
}
if (!empty($data['catfilter'])) {
$cidsarray = array($data['catfilter']);
} else {
$cidsarray = array();
}
// Create array based on modifications
$article_args = array();
// Only include pubtype if a specific pubtype is selected
if (!empty($data['pubtype_id'])) {
$article_args['ptid'] = $data['pubtype_id'];
}
// If itemlimit is set to 0, then don't pass to getall
if ($data['itemlimit'] != 0) {
$article_args['numitems'] = $data['itemlimit'];
}
// Add the rest of the arguments
$article_args['cids'] = $cidsarray;
$article_args['enddate'] = time();
$article_args['state'] = $statearray;
$article_args['fields'] = $data['fields'];
$article_args['sort'] = $data['toptype'];
$data['filtereditems'] = xarModAPIFunc('publications', 'user', 'getall', $article_args);
// Check for exceptions
// if (!isset($vars['filtereditems']) && xarCurrentErrorType() != XAR_NO_EXCEPTION)
// return; // throw back
// Try to keep the additional headlines select list width less than 50 characters
for ($idx = 0; $idx < count($data['filtereditems']); $idx++) {
if (strlen($data['filtereditems'][$idx]['title']) > 50) {
$data['filtereditems'][$idx]['title'] = substr($data['filtereditems'][$idx]['title'], 0, 47) . '...';
}
}
$data['pubtypes'] = xarModAPIFunc('publications', 'user', 'get_pubtypes');
$data['categorylist'] = xarModAPIFunc('categories', 'user', 'getcat');
$data['stateoptions'] = array(array('id' => '', 'name' => xarML('All Published')), array('id' => '3', 'name' => xarML('Frontpage')), array('id' => '2', 'name' => xarML('Approved')));
$data['sortoptions'] = array(array('id' => 'author', 'name' => xarML('Author')), array('id' => 'date', 'name' => xarML('Date')), array('id' => 'hits', 'name' => xarML('Hit Count')), array('id' => 'rating', 'name' => xarML('Rating')), array('id' => 'title', 'name' => xarML('Title')));
//Put together the additional featured publications list
for ($idx = 0; $idx < count($data['filtereditems']); ++$idx) {
$data['filtereditems'][$idx]['selected'] = '';
for ($mx = 0; $mx < count($data['moreitems']); ++$mx) {
if ($data['moreitems'][$mx] == $data['filtereditems'][$idx]['id']) {
$data['filtereditems'][$idx]['selected'] = 'selected';
}
}
}
$data['morepublications'] = $data['filtereditems'];
return $data;
}
示例9: publications_admin_importpubtype
/**
* Import an object definition or an object item from XML
*/
function publications_admin_importpubtype($args)
{
if (!xarSecurityCheck('AdminPublications')) {
return;
}
if (!xarVarFetch('import', 'isset', $import, NULL, XARVAR_DONT_SET)) {
return;
}
if (!xarVarFetch('xml', 'isset', $xml, NULL, XARVAR_DONT_SET)) {
return;
}
extract($args);
$data = array();
$data['menutitle'] = xarML('Dynamic Data Utilities');
$data['warning'] = '';
$data['options'] = array();
$basedir = 'modules/publications';
$filetype = 'xml';
$files = xarModAPIFunc('dynamicdata', 'admin', 'browse', array('basedir' => $basedir, 'filetype' => $filetype));
if (!isset($files) || count($files) < 1) {
$files = array();
$data['warning'] = xarML('There are currently no XML files available for import in "#(1)"', $basedir);
}
if (!empty($import) || !empty($xml)) {
if (!xarSecConfirmAuthKey()) {
return;
}
if (!empty($import)) {
$found = '';
foreach ($files as $file) {
if ($file == $import) {
$found = $file;
break;
}
}
if (empty($found) || !file_exists($basedir . '/' . $file)) {
$msg = xarML('File not found');
throw new BadParameterException(null, $msg);
}
$ptid = xarModAPIFunc('publications', 'admin', 'importpubtype', array('file' => $basedir . '/' . $file));
} else {
$ptid = xarModAPIFunc('publications', 'admin', 'importpubtype', array('xml' => $xml));
}
if (empty($ptid)) {
return;
}
$data['warning'] = xarML('Publication type #(1) was successfully imported', $ptid);
}
natsort($files);
array_unshift($files, '');
foreach ($files as $file) {
$data['options'][] = array('id' => $file, 'name' => $file);
}
$data['authid'] = xarSecGenAuthKey();
return $data;
}
示例10: publications_userapi_getrandom
/**
* Get Random Publication(s)
*
* Note : the following parameters are all optional
* @author Michel Dalle <mikespub@xaraya.com>
* @param int $args['numitems'] number of publications to get
* @param int $args['ptid'] publication type ID (for news, sections, reviews, ...)
* @param array $args['state'] array of requested status(es) for the publications
* @param array $args['cids'] array of category IDs for which to get publications (OR/AND)
* (for all categories don?t set it)
* @param bool $args['andcids'] true means AND-ing categories listed in cids
* @param array $args['fields'] array with all the fields to return per article
* Default list is : 'id','title','summary','owner',
* 'pubdate','pubtype_id','notes','state','body'
* Optional fields : 'cids','author','counter','rating','dynamicdata'
* @param string $args['locale'] language/locale (if not using multi-sites, categories etc.)
* @param bool $args['unique'] return unique results
* @return array of publications, or false on failure
*/
function publications_userapi_getrandom($args)
{
// 1. count the number of items that apply
$count = xarModAPIFunc('publications', 'user', 'countitems', $args);
if (empty($count)) {
return array();
}
// 2. retrieve numitems random publications
if (empty($args['numitems'])) {
$numitems = 1;
} else {
$numitems = $args['numitems'];
}
$idlist = array();
if (empty($args['unique'])) {
$args['unique'] = false;
} else {
$args['unique'] = true;
}
$publications = array();
mt_srand((double) microtime() * 1000000);
if ($count <= $numitems) {
unset($args['numitems']);
// retrieve all publications and randomize the order
$items = xarModAPIFunc('publications', 'user', 'getall', $args);
$randomkeys = array_rand($items, $count);
if (!is_array($randomkeys)) {
$randomkeys = array($randomkeys);
}
foreach ($randomkeys as $key) {
array_push($publications, $items[$key]);
}
} else {
// retrieve numitems x 1 random article
$args['numitems'] = 1;
for ($i = 0; $i < $numitems; $i++) {
$args['startnum'] = mt_rand(1, $count);
if ($args['unique'] && in_array($args['startnum'], $idlist)) {
$i--;
} else {
$idlist[] = $args['startnum'];
$items = xarModAPIFunc('publications', 'user', 'getall', $args);
if (empty($items)) {
break;
}
array_push($publications, array_pop($items));
}
}
}
return $publications;
}
示例11: publications_admin_create
function publications_admin_create()
{
if (!xarVarFetch('ptid', 'id', $data['ptid'])) {
return;
}
if (!xarVarFetch('new_cids', 'array', $cids, NULL, XARVAR_NOT_REQUIRED)) {
return;
}
if (!xarVarFetch('preview', 'str', $data['preview'], NULL, XARVAR_NOT_REQUIRED)) {
return;
}
if (!xarVarFetch('save', 'str', $save, NULL, XARVAR_NOT_REQUIRED)) {
return;
}
// Confirm authorisation code
// This has been disabled for now
// if (!xarSecConfirmAuthKey()) return;
$data['items'] = array();
$pubtypeobject = DataObjectMaster::getObject(array('name' => 'publications_types'));
$pubtypeobject->getItem(array('itemid' => $data['ptid']));
$data['object'] = DataObjectMaster::getObject(array('name' => $pubtypeobject->properties['name']->value));
$isvalid = $data['object']->checkInput();
$data['settings'] = xarModAPIFunc('publications', 'user', 'getsettings', array('ptid' => $data['ptid']));
if ($data['preview'] || !$isvalid) {
// Show debug info if called for
if (!$isvalid && xarModVars::get('publications', 'debugmode') && in_array(xarUserGetVar('uname'), xarConfigVars::get(null, 'Site.User.DebugAdmins'))) {
var_dump($data['object']->getInvalids());
}
// Preview or bad data: redisplay the form
$data['properties'] = $data['object']->getProperties();
if ($data['preview']) {
$data['tab'] = 'preview';
}
return xarTplModule('publications', 'admin', 'new', $data);
}
// Create the object
$id = $data['object']->createItem();
// if we can edit publications, go to admin view, otherwise go to user view
if (xarSecurityCheck('EditPublications', 0, 'Publication', $data['ptid'] . ':All:All:All')) {
// Redirect if we came from somewhere else
$cuurent_listview = xarSession::getVar('publications_current_listview');
if (!empty($cuurent_listview)) {
xarController::redirect($cuurent_listview);
}
xarController::redirect(xarModURL('publications', 'admin', 'view', array('ptid' => $data['ptid'])));
} else {
xarController::redirect(xarModURL('publications', 'user', 'view', array('ptid' => $data['ptid'])));
}
return true;
}
示例12: publications_userapi_getmonthcount
/**
* count the number of items per month
* @param $args['cids'] not supported here (yet ?)
* @param $args['ptid'] publication type ID we're interested in
* @param $args['state'] array of requested status(es) for the publications
* @return array array(month => count), or false on failure
*/
function publications_userapi_getmonthcount($args)
{
// Get database setup
$dbconn = xarDB::getConn();
// Get the field names and LEFT JOIN ... ON ... parts from publications
// By passing on the $args, we can let leftjoin() create the WHERE for
// the publications-specific columns too now
$publicationsdef = xarModAPIFunc('publications', 'user', 'leftjoin', $args);
// Bug 1590 - Create custom query supported by each database.
$dbtype = xarDB::getType();
switch ($dbtype) {
case 'mysql':
$query = "SELECT LEFT(FROM_UNIXTIME(start_date),7) AS mymonth, COUNT(*) FROM " . $publicationsdef['table'];
// echo $query;exit;
break;
case 'postgres':
$query = "SELECT TO_CHAR(ABSTIME(pubdate),'YYYY-MM') AS mymonth, COUNT(*) FROM " . $publicationsdef['table'];
break;
case 'mssql':
$query = "SELECT LEFT(CONVERT(VARCHAR,DATEADD(ss,pubdate,'1/1/1970'),120),7) as mymonth, COUNT(*) FROM " . $publicationsdef['table'];
break;
// TODO: Add SQL queries for Oracle, etc.
// TODO: Add SQL queries for Oracle, etc.
default:
return;
}
if (!empty($publicationsdef['where'])) {
$query .= ' WHERE ' . $publicationsdef['where'];
}
switch ($dbtype) {
case 'mssql':
$query .= " GROUP BY LEFT(CONVERT(VARCHAR,DATEADD(ss,pubdate,'1/1/1970'),120),7)";
break;
default:
$query .= ' GROUP BY mymonth';
break;
}
$result =& $dbconn->Execute($query);
if (!$result) {
return;
}
$months = array();
while (!$result->EOF) {
list($month, $count) = $result->fields;
$months[$month] = $count;
$result->MoveNext();
}
return $months;
}
示例13: publications_adminapi_deletepubtype
/**
* Delete a publication type
*
* @param $args['ptid'] ID of the publication type
* @return bool true on success, false on failure
*/
function publications_adminapi_deletepubtype($args)
{
// Get arguments from argument array
extract($args);
// Argument check - make sure that all required arguments are present
// and in the right format, if not then set an appropriate error
// message and return
if (!isset($ptid) || !is_numeric($ptid) || $ptid < 1) {
$msg = xarML('Invalid #(1) for #(2) function #(3)() in module #(4)', 'publication type ID', 'admin', 'deletepubtype', 'Publications');
throw new BadParameterException(null, $msg);
}
// Security check - we require ADMIN rights here
if (!xarSecurityCheck('AdminPublications', 1, 'Publication', "{$ptid}:All:All:All")) {
return;
}
// Load user API to obtain item information function
if (!xarModAPILoad('publications', 'user')) {
return;
}
// Get current publication types
$pubtypes = xarModAPIFunc('publications', 'user', 'get_pubtypes');
if (!isset($pubtypes[$ptid])) {
$msg = xarML('Invalid #(1) for #(2) function #(3)() in module #(4)', 'publication type ID', 'admin', 'deletepubtype', 'Publications');
throw new BadParameterException(null, $msg);
}
// Get database setup
$dbconn = xarDB::getConn();
$xartable = xarDB::getTables();
$pubtypestable = $xartable['publication_types'];
// Delete the publication type
$query = "DELETE FROM {$pubtypestable}\n WHERE pubtype_id = ?";
$result =& $dbconn->Execute($query, array($ptid));
if (!$result) {
return;
}
$publicationstable = $xartable['publications'];
// Delete all publications for this publication type
$query = "DELETE FROM {$publicationstable}\n WHERE pubtype_id = ?";
$result =& $dbconn->Execute($query, array($ptid));
if (!$result) {
return;
}
// TODO: call some kind of itemtype delete hooks here, once we have those
//xarModCallHooks('itemtype', 'delete', $ptid,
// array('module' => 'publications',
// 'itemtype' =>'ptid'));
return true;
}
示例14: publications_user_redirect
/**
* redirect to a site based on some URL field of the item
*/
function publications_user_redirect($args)
{
// Get parameters from user
if (!xarVarFetch('id', 'id', $id, NULL, XARVAR_NOT_REQUIRED)) {
return;
}
// Override if needed from argument array
extract($args);
if (!isset($id) || !is_numeric($id) || $id < 1) {
return xarML('Invalid publication ID');
}
// Load API
if (!xarModAPILoad('publications', 'user')) {
return;
}
// Get publication
$publication = xarModAPIFunc('publications', 'user', 'get', array('id' => $id));
if (!is_array($publication)) {
$msg = xarML('Failed to retrieve publication in #(3)_#(1)_#(2).php', 'user', 'get', 'publications');
throw new DataNotFoundException(null, $msg);
}
$ptid = $publication['pubtype_id'];
// Get publication types
$pubtypes = xarModAPIFunc('publications', 'user', 'get_pubtypes');
// TODO: improve this e.g. when multiple URL fields are present
// Find an URL field based on the pubtype configuration
foreach ($pubtypes[$ptid]['config'] as $field => $value) {
if (empty($value['label'])) {
continue;
}
if ($value['format'] == 'url' && !empty($publication[$field]) && $publication[$field] != 'http://') {
// TODO: add some verifications here !
$hooks = xarModCallHooks('item', 'display', $id, array('module' => 'publications', 'itemtype' => $ptid), 'publications');
xarController::redirect($article[$field]);
return true;
} elseif ($value['format'] == 'urltitle' && !empty($publication[$field]) && substr($publication[$field], 0, 2) == 'a:') {
$array = unserialize($publication[$field]);
if (!empty($array['link']) && $array['link'] != 'http://') {
$hooks = xarModCallHooks('item', 'display', $id, array('module' => 'publications', 'itemtype' => $ptid), 'publications');
xarController::redirect($array['link']);
return true;
}
}
}
return xarML('Unable to find valid redirect field');
}
示例15: publications_userapi_getitemfields
/**
* utility function to pass item field definitions to whoever
*
* @param $args['itemtype'] item type (optional)
* @return array Array containing the item field definitions
*/
function publications_userapi_getitemfields($args)
{
extract($args);
$itemfields = array();
$pubtypes = xarModAPIFunc('publications', 'user', 'get_pubtypes');
if (!empty($itemtype) && !empty($pubtypes[$itemtype])) {
$fields = $pubtypes[$itemtype]['config'];
} else {
$fields = xarModAPIFunc('publications', 'user', 'getpubfields');
}
foreach ($fields as $name => $info) {
if (empty($info['label'])) {
continue;
}
$itemfields[$name] = array('name' => $name, 'label' => $info['label'], 'type' => $info['format']);
}
return $itemfields;
}