PageRenderTime 62ms CodeModel.GetById 35ms RepoModel.GetById 0ms app.codeStats 0ms

/inc/app/cms/lib/Workspace/User.php

https://github.com/lux/siteforge
PHP | 158 lines | 120 code | 31 blank | 7 comment | 19 complexity | 6437a310221ccd52717fd5be67e071b2 MD5 | raw file
Possible License(s): GPL-2.0, LGPL-2.1, Apache-2.0
  1. <?php
  2. $loader->import ('cms.Workspace');
  3. /**
  4. * @package CMS
  5. * @category Workspace
  6. */
  7. class WorkspaceUser {
  8. function getList ($team = '', $role = '') {
  9. global $db;
  10. $q = '';
  11. $bind = array ();
  12. $operator = ' where ';
  13. if (! empty ($team)) {
  14. $q .= $operator . 'sitellite_team = ?';
  15. $bind[] = $team;
  16. $operator = ' and ';
  17. }
  18. if (! empty ($role)) {
  19. $q .= $operator . 'sitellite_role = ?';
  20. $bind[] = $role;
  21. }
  22. $res = $db->fetch ('
  23. select
  24. username, firstname, lastname, email
  25. from
  26. sitellite_user
  27. ' . $q . '
  28. order by
  29. lastname, firstname, username',
  30. $bind
  31. );
  32. if (! $res) {
  33. $this->error = $db->error;
  34. return false;
  35. } elseif (is_object ($res)) {
  36. return array ($res);
  37. }
  38. return $res;
  39. }
  40. function getStatus ($user) {
  41. global $db, $loader;
  42. $loader->import ('saf.Date');
  43. $res = $db->fetch (
  44. 'select session_id, expires from sitellite_user where username = ?',
  45. $user
  46. );
  47. if (! $res) {
  48. $this->error = $db->error;
  49. return false;
  50. }
  51. if (! empty ($res->session_id) && Date::timestamp ($res->expires, 'U') >= time ()) {
  52. return 'available';
  53. }
  54. return 'away';
  55. }
  56. function export ($user) {
  57. global $db, $loader;
  58. $row = $db->fetch ('
  59. select
  60. *
  61. from
  62. sitellite_user
  63. where
  64. username = ?',
  65. $user
  66. );
  67. if (! $row) {
  68. $this->error = $db->error;
  69. return false;
  70. }
  71. // build vcard
  72. $loader->import ('saf.Date.vCalendar');
  73. $card = new vCal ();
  74. $card->tag = 'VCARD';
  75. $card->addProperty ('VERSION', '3.0');
  76. $card->addProperty ('PRODID', '-//Simian Systems\, Inc//NONSGML Sitellite CMS ' . SITELLITE_VERSION . '//EN');
  77. if (empty ($row->firstname) && empty ($row->lastname)) {
  78. // skip name
  79. $card->addProperty ('N', $row->username);
  80. } else {
  81. $card->addProperty ('N', array ($row->firstname, $row->lastname));
  82. $card->addProperty ('FN', $row->firstname . ' ' . $row->lastname);
  83. }
  84. if (! empty ($row->company)) {
  85. $card->addProperty ('ORG', $row->company);
  86. }
  87. if (! empty ($row->position)) {
  88. $title =& $card->addProperty ('TITLE', $row->position);
  89. $title->addParameter ('LANGUAGE', $row->lang);
  90. }
  91. if (! empty ($row->email)) {
  92. $card->addProperty ('EMAIL', $row->email, array ('type' => 'WORK'));
  93. }
  94. if (! empty ($row->phone)) {
  95. $card->addProperty ('TEL', $row->phone, array ('type' => 'WORK'));
  96. }
  97. if (! empty ($row->cell)) {
  98. $card->addProperty ('TEL', $row->cell, array ('type' => 'CELL'));
  99. }
  100. if (! empty ($row->fax)) {
  101. $card->addProperty ('TEL', $row->fax, array ('type' => 'FAX'));
  102. }
  103. if (! empty ($row->home)) {
  104. $card->addProperty ('TEL', $row->home, array ('type' => 'HOME'));
  105. }
  106. if (! empty ($row->address1)) {
  107. $card->addProperty (
  108. 'ADR',
  109. array (
  110. '', '',
  111. $row->address1,
  112. $row->city,
  113. $row->province,
  114. $row->postal_code,
  115. $row->country
  116. ),
  117. array ('type' => 'HOME')
  118. );
  119. }
  120. if (! empty ($row->website)) {
  121. $card->addProperty ('URL', $row->website);
  122. }
  123. // write the vcard
  124. return $card->unfold ($card->write ());
  125. }
  126. }
  127. ?>