1: <?php
2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35:
36:
37: Yii::import('application.models.X2Model');
38:
39: 40: 41: 42: 43:
44: class Opportunity extends X2Model {
45: 46: 47: 48:
49: public static function model($className=__CLASS__) { return parent::model($className); }
50:
51: 52: 53:
54: public function tableName() { return 'x2_opportunities'; }
55:
56: public function behaviors() {
57: return array_merge(parent::behaviors(),array(
58: 'X2LinkableBehavior'=>array(
59: 'class'=>'X2LinkableBehavior',
60: 'module'=>'opportunities'
61: ),
62: 'ERememberFiltersBehavior' => array(
63: 'class' => 'application.components.ERememberFiltersBehavior',
64: 'defaults'=>array(),
65: 'defaultStickOnClear'=>false
66: )
67: ));
68: }
69:
70: 71: 72: 73:
74: public function beforeSave() {
75: if(isset($this->associatedContacts))
76: $this->associatedContacts = self::parseContacts($this->associatedContacts);
77:
78: return parent::beforeSave();
79: }
80:
81: public static function getNames() {
82: $arr = Opportunity::model()->findAll();
83: $names = array(0=>'None');
84: foreach($arr as $opportunity)
85: $names[$opportunity->id] = $opportunity->name;
86:
87: return $names;
88: }
89:
90: public static function parseUsers($userArray){
91: return implode(', ',$userArray);
92: }
93:
94: public static function parseUsersTwo($arr){
95: $str="";
96: if(is_array($arr)){
97: $arr=array_keys($arr);
98: $str=implode(', ',$arr);
99: }
100:
101: return $str;
102: }
103:
104: public static function parseContacts($contactArray){
105: if(is_array($contactArray)){
106: return implode(' ',$contactArray);
107: }else{
108: return $contactArray;
109: }
110: }
111:
112: public static function parseContactsTwo($arr){
113: $str="";
114: foreach($arr as $id=>$contact){
115: $str.=$id." ";
116: }
117: return $str;
118: }
119:
120: public static function getOpportunityLinks($accountId) {
121:
122: $allOpportunities = X2Model::model('Opportunity')->findAllByAttributes(array('accountName'=>$accountId));
123:
124: $links = array();
125: foreach($allOpportunities as $model) {
126: $links[] = CHtml::link($model->name,array('/opportunities/opportunities/view','id'=>$model->id));
127: }
128: return implode(', ',$links);
129: }
130:
131: public static function editContactArray($arr, $model) {
132:
133: $rels=Relationships::model()->findAllByAttributes(array('firstType'=>'Contacts','secondType'=>'Opportunity','secondId'=>$model->id));
134: $pieces=array();
135: foreach($rels as $relationship){
136: $contact=X2Model::model('Contacts')->findByPk($relationship->firstId);
137: if(isset($contact)){
138: $pieces[$relationship->firstId]=$contact->name;
139: }
140: }
141: unset($arr[0]);
142: foreach($pieces as $id=>$contact){
143: if(isset($arr[$id])){
144: unset($arr[$id]);
145: }
146: }
147:
148: return $arr;
149: }
150:
151: public static function editUserArray($arr, $model) {
152:
153: $pieces=explode(', ',$model->assignedTo);
154: unset($arr['Anyone']);
155: unset($arr['admin']);
156: foreach($pieces as $user){
157: if(array_key_exists($user,$arr)){
158: unset($arr[$user]);
159: }
160: }
161: return $arr;
162: }
163:
164: public static function editUsersInverse($arr) {
165:
166: $data=array();
167:
168: foreach($arr as $username){
169: if($username!='' && !is_numeric($username))
170: $data[]=User::model()->findByAttributes(array('username'=>$username));
171: elseif(is_numeric($username))
172: $data[]=Groups::model()->findByPK($username);
173: }
174:
175: $temp=array();
176: if(isset($data)){
177: foreach($data as $item){
178: if(isset($item)){
179: if($item instanceof User)
180: $temp[$item->username]=$item->firstName.' '.$item->lastName;
181: else
182: $temp[$item->id]=$item->name;
183: }
184: }
185: }
186: return $temp;
187: }
188:
189: public static function editContactsInverse($arr) {
190: $data=array();
191:
192: foreach($arr as $id){
193: if($id!='')
194: $data[]=X2Model::model('Contacts')->findByPk($id);
195: }
196: $temp=array();
197:
198: foreach($data as $item){
199: $temp[$item->id]=$item->firstName.' '.$item->lastName;
200: }
201: return $temp;
202: }
203:
204: public function search($resultsPerPage=null, $uniqueId=null) {
205: $criteria=new CDbCriteria;
206:
207: $parameters=array('limit'=>ceil(Profile::getResultsPerPage()));
208: $criteria->scopes=array('findAll'=>array($parameters));
209:
210: return $this->searchBase($criteria, $resultsPerPage);
211: }
212:
213: public function searchAdmin() {
214: $criteria=new CDbCriteria;
215:
216: return $this->searchBase($criteria);
217: }
218:
219:
220: }
221: