protected function execute(InputInterface $input, OutputInterface $output) { $output->writeln('<info>Clearing tracker...</info>'); $trackerId = $input->getArgument('trackerId'); $tracker = \Tracker_Definition::get($trackerId); if (!$tracker) { throw new \Exception('Tracker Clear: Tracker not found'); } $perms = \Perms::get('tracker', $trackerId); if (!$perms->admin_trackers) { throw new \Exception('Tracker Clear: Admin permission required'); } $confirm = $input->getOption('confirm'); $utilities = new \Services_Tracker_Utilities(); if ($confirm) { $utilities->clearTracker($trackerId); $output->writeln('<info>Tracker clear done</info>'); } else { $name = $tracker->getConfiguration('name'); $output->writeln("<info>Use the --confirm option to proceed with the clear operation.</info>"); $output->writeln("<info> There is NO undo and no notifications will be sent.</info>"); $output->writeln("<info> All items in tracker #{$trackerId} \"{$name}\" will be deleted.</info>"); } return 0; }
function wikiplugin_insert_rewrite($data, $params, $context) { $tikilib = TikiLib::lib('tiki'); $trackerIds = $tikilib->get_preference('tracker_insert_allowed', array(), true); foreach ($trackerIds as $trackerId) { $utilities = new Services_Tracker_Utilities(); $item = Tracker_Item::newItem($trackerId); if (!$item->canModify()) { continue; } $definition = $item->getDefinition(); if (!$definition->canInsert(array_keys($params))) { continue; } $available = array(); foreach ($params as $key => $value) { if ($item->canModifyField($key)) { $available[$key] = $value; } } $id = $utilities->insertItem($definition, array('status' => 'o', 'fields' => $available)); if (false !== $id) { $relationlib = TikiLib::lib('relation'); $relationlib->add_relation('tiki.source.creator', 'trackeritem', $id, $context['type'], $context['itemId']); return "{objectlink type=trackeritem id={$id}}"; } } return false; }
function execute(JitFilter $data) { $object_id = $data->object_id->int(); $field = $data->field->word(); $value = $data->value->text(); $trklib = TikiLib::lib('trk'); $info = $trklib->get_item_info($object_id); $definition = Tracker_Definition::get($info['trackerId']); $utilities = new Services_Tracker_Utilities(); $utilities->updateItem($definition, array('itemId' => $object_id, 'status' => $info['status'], 'fields' => array($field => $value))); return true; }
function action_import($input) { if (!Perms::get()->admin_trackers) { throw new Services_Exception_Denied(tr('Reserved for tracker administrators')); } unset($success); $confirm = $input->confirm->int(); if ($confirm) { $raw = $input->raw->none(); $preserve = $input->preserve->int(); $data = TikiLib::lib('tiki')->read_raw($raw); if (!$data || !isset($data['tracker'])) { throw new Services_Exception(tr('Invalid data provided'), 400); } $data = $data['tracker']; $trackerId = 0; if ($preserve) { $trackerId = (int) $data['trackerId']; } unset($data['trackerId']); $trackerId = $this->utilities->updateTracker($trackerId, $data); $success = 1; return array('trackerId' => $trackerId, 'name' => $data['name'], 'success' => $success); } return array('title' => tr('Import Tracker Structure'), 'modal' => $input->modal->int()); }
function write(\Tracker\Tabular\Source\SourceInterface $source) { $schema = $source->getSchema(); $definition = $schema->getDefinition(); $columns = $schema->getColumns(); $utilities = new \Services_Tracker_Utilities(); $tx = \TikiDb::get()->begin(); $lookup = $this->getItemIdLookup($schema); foreach ($source->getEntries() as $entry) { $info = ['itemId' => false, 'status' => '', 'fields' => []]; foreach ($columns as $column) { $entry->parseInto($info, $column); } $info['itemId'] = $lookup($info); if ($info['itemId']) { $utilities->updateItem($definition, $info); } else { $utilities->insertItem($definition, $info); } } $tx->commit(); }
private function updateItem($itemId, $metadata, $additional) { $definition = $this->getScormTracker(); $fields = $this->buildFields($definition, $metadata, $additional); $utilities = new Services_Tracker_Utilities(); $utilities->updateItem($definition, array('itemId' => (int) $itemId, 'status' => 'o', 'fields' => $fields)); }
function linkedInLogin() { global $user, $prefs; $userlib = TikiLib::lib('user'); $curl = curl_init(); $data = array("oauth2_access_token" => $_SESSION['LINKEDIN_ACCESS_TOKEN'], "format" => "json"); $profile_fields = array('id', 'first-name', 'last-name', 'formatted-name', 'picture-url', 'picture-urls::(original)'); if ($prefs['socialnetworks_linkedin_email'] == 'y') { $profile_fields[] = 'email-address'; } $url = "https://api.linkedin.com/v1/people/~:(" . implode(",", $profile_fields) . ")"; $url = sprintf("%s?%s", $url, http_build_query($data, '', '&')); curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); $result = curl_exec($curl); curl_close($curl); $linkedin_info = json_decode($result); if (isset($linkedin_info->errorCode)) { $smarty = TikiLib::lib('smarty'); $smarty->assign('errortype', 'login'); $smarty->assign('msg', tra('We were unable to log you in using your LinkedIn account. Please contact the administrator.')); $smarty->display('error.tpl'); die; } if (!$user) { if ($prefs['socialnetworks_linkedin_login'] != 'y') { return false; } $local_user = $this->getOne("select `user` from `tiki_user_preferences` where `prefName` = 'linkedin_id' and `value` = ?", array($linkedin_info->id)); if ($local_user) { $user = $local_user; } elseif ($prefs['socialnetworks_linkedin_autocreateuser'] == 'y') { $randompass = $userlib->genPass(); $email = $prefs['socialnetworks_linkedin_email'] === 'y' ? $linkedin_info->emailAddress : ''; if ($prefs['login_is_email'] == 'y' && $email) { $user = $email; } else { if ($prefs['login_autogenerate'] == 'y') { $user = ''; } else { $user = '******' . $linkedin_info->id; } } $user = $userlib->add_user($user, $randompass, $email); if (!$user) { $smarty = TikiLib::lib('smarty'); $smarty->assign('errortype', 'login'); $smarty->assign('msg', tra('We were unable to log you in using your LinkedIn account. Please contact the administrator.')); $smarty->display('error.tpl'); die; } //Checks if user tracker is used and if it is, then set the names as per the info $ret = $userlib->get_usertrackerid("Registered"); $userTracker = $ret['usersTrackerId']; $userField = $ret['usersFieldId']; if ($prefs['socialnetworks_linkedin_create_user_trackeritem'] == 'y' && $userTracker && $userField) { $definition = Tracker_Definition::get($userTracker); $utilities = new Services_Tracker_Utilities(); $fields = array('ins_' . $userField => $user); if (!empty($prefs['socialnetworks_linkedin_names'])) { $names = array_map('trim', explode(',', $prefs['socialnetworks_linkedin_names'])); $fields['ins_' . $names[0]] = $linkedin_info->firstName; $fields['ins_' . $names[1]] = $linkedin_info->lastName; } $utilities->insertItem($definition, array('status' => '', 'fields' => $fields, 'validate' => false)); } $this->set_user_preference($user, 'realName', $linkedin_info->formattedName); if ($prefs['feature_userPreferences'] == 'y') { $avatarlib = TikiLib::lib('avatar'); $avatarlib->set_avatar_from_url($linkedin_info->pictureUrls->values[0], $user); } } else { $_SESSION['loginfrom'] = str_replace('tiki-socialnetworks_linkedin.php', 'tiki-socialnetworks.php', $_SERVER['REQUEST_URI']); $smarty = TikiLib::lib('smarty'); $smarty->assign('errortype', 'login'); $smarty->assign('msg', tra('You need to link your local account to LinkedIn before you can login using it')); $smarty->display('error.tpl'); die; } global $user_cookie_site; $_SESSION[$user_cookie_site] = $user; $userlib->update_expired_groups(); $this->set_user_preference($user, 'linkedin_id', $linkedin_info->id); $this->set_user_preference($user, 'linkedin_token', $_SESSION['LINKEDIN_ACCESS_TOKEN']); $userlib->update_lastlogin($user); header('Location: tiki-index.php'); die; } else { $this->set_user_preference($user, 'linkedin_id', $linkedin_info->id); $this->set_user_preference($user, 'linkedin_token', $_SESSION['LINKEDIN_ACCESS_TOKEN']); } return true; }
private function prepareRefreshRelated($target) { $itemId = $this->getItemId(); // After saving the field, bind a temporary event on save to refresh child elements TikiLib::events()->bind('tiki.trackeritem.save', function ($args) use($itemId, $target) { if ($args['type'] == 'trackeritem' && $args['object'] == $itemId) { $utilities = new Services_Tracker_Utilities(); foreach ($target as $key) { list($type, $id) = explode(':', $key, 2); if ($type == 'trackeritem') { $utilities->resaveItem($id); } } } }); }
function getDocumentPart($baseKey, Search_Type_Factory_Interface $typeFactory) { $data = $this->getLinkData(array(), 0); $item = $data['value']; $dlist = $data['listdisplay']; $list = $data['list']; if (!empty($dlist)) { $label = isset($dlist[$item]) ? $dlist[$item] : ''; } else { $label = isset($list[$item]) ? $list[$item] : ''; } $out = array($baseKey => $typeFactory->sortable($item), "{$baseKey}_text" => $typeFactory->plaintext($label)); $indexRemote = array_filter(explode('|', $this->getOption('indexRemote'))); if (count($indexRemote) && is_numeric($item)) { $utilities = new Services_Tracker_Utilities(); $trackerId = $this->getOption('trackerId'); $itemData = $utilities->getItem($trackerId, $item); $definition = Tracker_Definition::get($trackerId); foreach ($indexRemote as $fieldId) { $field = $definition->getField($fieldId); $permName = $field['permName']; $out["{$baseKey}_{$permName}"] = $typeFactory->plaintext($itemData['fields'][$permName]); } } return $out; }
function action_clear($input) { return TikiLib::lib('tiki')->allocate_extra('tracker_clear_items', function () use($input) { $trackerId = $input->trackerId->int(); $confirm = $input->confirm->int(); $perms = Perms::get('tracker', $trackerId); if (!$perms->admin_trackers) { throw new Services_Exception_Denied(tr('Reserved to tracker administrators')); } $definition = Tracker_Definition::get($trackerId); if (!$definition) { throw new Services_Exception_NotFound(); } if ($confirm) { $utilities = new Services_Tracker_Utilities(); $utilities->clearTracker($trackerId); return array('trackerId' => 0); } return array('trackerId' => $trackerId, 'name' => $definition->getConfiguration('name')); }); }
function getDocumentPart($baseKey, Search_Type_Factory_Interface $typeFactory) { $item = $this->getValue(); $label = $this->getItemLabel($item); $out = array($baseKey => $typeFactory->identifier($item), "{$baseKey}_text" => $typeFactory->sortable($label)); $indexRemote = array_filter(explode('|', $this->getOption('indexRemote'))); if (count($indexRemote) && is_numeric($item)) { $utilities = new Services_Tracker_Utilities(); $trackerId = $this->getOption('trackerId'); $itemData = $utilities->getItem($trackerId, $item); $definition = Tracker_Definition::get($trackerId); foreach ($indexRemote as $fieldId) { $field = $definition->getField($fieldId); $permName = $field['permName']; $out["{$baseKey}_{$permName}"] = $typeFactory->sortable($itemData['fields'][$permName]); } } return $out; }